0

以下に定義する 2 つのクラスがあります。

[Serializable()]
public class Topology
{
    [XmlElement("floors")]
    public Floor[] Floors { get; set; }
}

[Serializable()]
public class Floor
{
    [XmlElement("name")]
    public string name { get; set; }

    [XmlElement("map_path")]
    public string map_path { get; set; }
}

以下に示すxmlファイルを逆シリアル化したいのですが、以下に指定された方法を使用してxmlファイルを逆シリアル化します。

XML ファイル:

<?xml version="1.0" encoding="iso-8859-9"?>
<Topology>
    <floors>
        <floor id="1">
            <name>1</name>
            <map_path>C:\</map_path>
        </floor>
            <floor id="2">
            <name>2</name>
            <map_path>D:\</map_path>
        </floor>
    </floors>
</Topology>

デシリアライズ方法:

        static void Main(string[] args)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(Topology));

            StreamReader reader = new StreamReader(@"C:\topology2.xml");
            Topology top = (Topology)serializer.Deserialize(reader);
            reader.Close();

            for (int i = 0; i < top.Floors.Length; i++ )
                Console.WriteLine(top.Floors[i].name + top.Floors[i].map_path);

            Console.ReadLine();
        }

「Floors」は取得できますが、name と map_path ノードの値を取得できませんでした。私は何をすべきか?

4

1 に答える 1

1

XML ファイルは、xml シリアライザーが読み取るための適切なフォーマットではありません。次のフォーマットに従ってください。

<?xml version="1.0" encoding="iso-8859-9"?>
<Topology>
    <floors id="1">
        <name>1</name>
        <map_path>C:\</map_path>
    </floors>
    <floors id="2">
        <name>1</name>
        <map_path>C:\</map_path>
    </floors>
</Topology>
于 2013-03-15T09:51:31.583 に答える