목록으로 XML 역 직렬화

애드리안 부제 아

XML을 C # 개체 (개체 배열 포함)로 역 직렬화하려고합니다.

수업은 다음과 같습니다.

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1015")]
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
[System.Xml.Serialization.XmlRootAttribute("I-collection", Namespace = "urn:xtk:queryDef", IsNullable = false)]
public partial class MyCollection
{

    private List<I> itemsField;

    public MyCollection()
    {
        this.itemsField = new List<I>();

    }

    [System.Xml.Serialization.XmlElementAttribute("I", Form = System.Xml.Schema.XmlSchemaForm.Unqualified, Order = 0)]
    public List<I> Items
    {
        get
        {
            return this.itemsField;
        }
        set
        {
            this.itemsField = value;
        }
    }
}

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1015")]
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class I
{

    private string EMAILField;

    private string FIRST_NAMEField;

    private string INDIVIDUAL_KEYField;

    private string LANGUAGE_CODEField;

    private string LAST_NAMEField;

    private string USERNAMEField;

    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string EMAIL
    {
        get
        {
            return this.EMAILField;
        }
        set
        {
            this.EMAILField = value;
        }
    }

    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string FIRST_NAME
    {
        get
        {
            return this.FIRST_NAMEField;
        }
        set
        {
            this.FIRST_NAMEField = value;
        }
    }

    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string INDIVIDUAL_KEY
    {
        get
        {
            return this.INDIVIDUAL_KEYField;
        }
        set
        {
            this.INDIVIDUAL_KEYField = value;
        }
    }

    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string LANGUAGE_CODE
    {
        get
        {
            return this.LANGUAGE_CODEField;
        }
        set
        {
            this.LANGUAGE_CODEField = value;
        }
    }

    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string LAST_NAME
    {
        get
        {
            return this.LAST_NAMEField;
        }
        set
        {
            this.LAST_NAMEField = value;
        }
    }

    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string USERNAME
    {
        get
        {
            return this.USERNAMEField;
        }
        set
        {
            this.USERNAMEField = value;
        }
    }
}

역 직렬화 시도

MyCollection result = Serialization.Deserialize<MyCollection>(xmle.OuterXml);

여기서 xmle.OuterXml은

<I-collection xmlns="urn:xtk:queryDef">
  <I EMAIL="[email protected]" FIRST_NAME="" INDIVIDUAL_KEY="5" LANGUAGE_CODE="ENG" LAST_NAME="" USERNAME="UPed" />
  <I EMAIL="[email protected]" FIRST_NAME="" INDIVIDUAL_KEY="6" LANGUAGE_CODE="ENG" LAST_NAME="" USERNAME="GO" />
  <I EMAIL="[email protected]" FIRST_NAME="" INDIVIDUAL_KEY="7" LANGUAGE_CODE="ENG" LAST_NAME="" USERNAME="ir0" />
  <I EMAIL="[email protected]" FIRST_NAME="" INDIVIDUAL_KEY="8" LANGUAGE_CODE="ENG" LAST_NAME="" USERNAME="UPlqfa" />
  <I EMAIL="[email protected]" FIRST_NAME="" INDIVIDUAL_KEY="9" LANGUAGE_CODE="ENG" LAST_NAME="" USERNAME="jon17" />
  <I EMAIL="[email protected]" FIRST_NAME="" INDIVIDUAL_KEY="10" LANGUAGE_CODE="N/D" LAST_NAME="" USERNAME="ctu_aa4849_jie" />
  <I EMAIL="[email protected]" FIRST_NAME="" INDIVIDUAL_KEY="11" LANGUAGE_CODE="ENG" LAST_NAME="" USERNAME="rnopwakc" />
  <I EMAIL="[email protected]" FIRST_NAME="" INDIVIDUAL_KEY="12" LANGUAGE_CODE="ENG" LAST_NAME="" USERNAME="TRIsd" />
  <I EMAIL="[email protected]" FIRST_NAME="" INDIVIDUAL_KEY="13" LANGUAGE_CODE="ENG" LAST_NAME="" USERNAME="ll20373196" />
  <I EMAIL="[email protected]" FIRST_NAME="Sa" INDIVIDUAL_KEY="14" LANGUAGE_CODE="FRA" LAST_NAME="w" USERNAME="wsp" />
</I-collection>

Serialization.Deserialize는 다음을 수행합니다.

public static T Deserialize<T>(string xml)
        {
            if (string.IsNullOrEmpty(xml))
            {
                throw new ArgumentNullException("xml");
            }


            XmlSerializer serializer = new XmlSerializer(typeof(T));
            using (StringReader stream = new StringReader(xml))
            {
                try
                {
                    return (T)serializer.Deserialize(stream);
                }

                catch (Exception ex)
                { 
                    throw new InvalidOperationException("Failed to create object from xml string", ex);
                }
            }
        }

문제는 반환하는 객체가 비어 있다는 것입니다 (itemField List가 비어 있음을 의미합니다). 이 역 직렬화는 실제로 XML의 데이터를 사용하여 목록을 자동으로 채워야합니다. 아니면 수동으로해야합니까?

마크 그 라벨

Form잘못된 것입니다; 시험:

[System.Xml.Serialization.XmlElementAttribute("I", Order = 0)]

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

목록으로 XML 역 직렬화

분류에서Dev

XML을 C #의 목록으로 역 직렬화

분류에서Dev

C # XML을 개체 목록으로 역 직렬화

분류에서Dev

목록의 XML 역 직렬화

분류에서Dev

XML을 목록으로 역 직렬화하면 빈 목록이 생성됨

분류에서Dev

xml 개체 C #으로 역 직렬화

분류에서Dev

XML 파일을 개체 목록으로 역 직렬화하는 방법

분류에서Dev

XML을 개체로 역 직렬화

분류에서Dev

XML에서 개체 역 직렬화로

분류에서Dev

C #의 목록이있는 개체에 XML 역 직렬화

분류에서Dev

중첩 된 목록의 XML 역 직렬화 C #

분류에서Dev

XML 역 직렬화 퍼즐

분류에서Dev

SQL Server XML 역 직렬화

분류에서Dev

동적 XML 역 직렬화

분류에서Dev

동적으로 C # 클래스로 XML 역 직렬화

분류에서Dev

유연한 수의 속성으로 XML 파일 역 직렬화

분류에서Dev

다른 유형으로 HttpWebResponse GetResponseStream에서 XML 역 직렬화

분류에서Dev

xml을 다른 유형으로 역 직렬화

분류에서Dev

Xml을 다른 형식으로 역 직렬화

분류에서Dev

동일한 속성으로 xml 요소 역 직렬화

분류에서Dev

xml 속성을 List <String>으로 역 직렬화

분류에서Dev

SOAP XML은 부분적으로 만 역 직렬화

분류에서Dev

XML 시퀀스 항목 역 직렬화 C # .NET

분류에서Dev

복잡한 XML을 개체로 역 직렬화

분류에서Dev

xml을 List <T>로 역 직렬화 할 수 없습니다.

분류에서Dev

C #에서 XML을 개체로 역 직렬화하는 방법

분류에서Dev

XML 역 직렬화로 인해 빈 개체가 생성됨

분류에서Dev

XML 역 직렬화로 인해 빈 개체가 생성됨

분류에서Dev

XML 역 직렬화 : xmlString에서 복잡한 클래스로