2

このようにxmlを逆シリアル化する最も簡単な方法は何ですか:

<root>
    <item id="1"/>
    <item id="2"/>
    <item id="3"/>
</root>
4

3 に答える 3

6

実際、それは可能です -ここでの答えはその方法を示しています。プロパティを配列として定義するだけで、注釈を付けますXmlElement

public class Item
{
    [XmlAttribute("id")]
    public int Id { get ;set; }

    [XmlText]
    public string Name { get; set; }
}

[XmlRoot("root")]
public class Root
{
    [XmlElement("item")]
    public Item[] Items { get;set;}
}
于 2013-04-23T16:46:57.527 に答える
3
List<string> items = XDocument.Parse("the xml")
                         .Descendants("item")
                         .Select(item => item.Attribute("id").Value).ToList();

XDocument を使用してください。

于 2013-02-08T09:03:40.970 に答える
0

最良の方法は、xml を解析することです。

逆シリアル化には、XmlSerializer でサポートされているスキームが必要です。XDocument を使用して解析してください。

シリアル化の例を次に示します。

クラスを定義する

public class item
{
    [XmlAttribute("item")]
    public string id { get; set; }
}

シリアル化する

var xs = new XmlSerializer(typeof(item[]));
xs.Serialize(File.Open(@"c:\Users\roman\Desktop\ser.xml", FileMode.OpenOrCreate), new item[] { new item { id = "1" }, new item { id = "1" }, new item { id = "1" } });

結果:

<?xml version="1.0"?>
<ArrayOfItem xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <item item="1" />
  <item item="1" />
  <item item="1" />
</ArrayOfItem>

ご覧のとおり、特別な xml スキーマを使用しているため、xml を解析できません。つまり、XDocument または XmlDocument を使用して手動で xml を解析するか、最初に XmlSerializer を使用してデータをシリアル化し、次に逆シリアル化する必要があります。

于 2013-02-08T09:02:11.727 に答える