0

System.Xml.Serialization を使用して、以下の構造の xml ファイルを読み取ろうとしています。

<?xml version="1.0" encoding="utf-8"?>
<rootname xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <AListItem>
    <someDataItem>1</someDataItem>
    <anotherItem>2</anotherItem>
  </AListItem>
  <AListItem>
    <someDataItem>3</someDataItem>
    <anotherItem>4</anotherItem>
  </AListItem>
  <Name>a string</Name>
</rootname>

私のクラス構造:

public class rootname
{
    public rootname() { }

    [XmlElement("AListItem")]
    List<AListItem> DataList { get; set; }

    public string Name { get; set; }
}

public class AListItem
{
    public AListItem() {}

    public string someDataItem { get; set; }
    public string anotherItem { get; set; }
}

逆シリアル化:

using (System.IO.FileStream stream = new FileStream(openFile.FileName, FileMode.Open, FileAccess.Read))
{
    System.Xml.Serialization.XmlSerializer xml = new System.Xml.Serialization.XmlSerializer(typeof(rootname));
    rootname deserializedObject = xml.Deserialize(stream) as rootname;
}

「Name」プロパティはロードされていますが、DataList は null です。AListItem アイテムをどのようにロードする必要がありますか? XmlElement 属性は正しいですか?

4

1 に答える 1

0

Tony に感謝します。問題に気付きました。リストを公開するのを忘れていました!

public class rootname
{
    public rootname() { }

    [XmlElement("AListItem")]
    public List<AListItem> DataList { get; set; } // <<< public!

    public string Name { get; set; }
}

おっと。

于 2012-07-09T12:54:00.247 に答える