1

このXMLを考えると:

<Items>
 <Item>a</Item>
 <Item>b</Item>
</Items>

どうすればこれを使用して逆シリアル化できXmlSerializerますか?いくつかのカスタムタイプの配列に、または単に。にstring[]

最も内側のタグが「文字列」と呼ばれる場合にこれを実行できることは知っていますが、カスタム名を保持したいと思います。

4

1 に答える 1

6

LINQPadでXmlSerializerを使用する方法の1つを次に示します。

void Main()
{
    using(var stream = new StringReader("<Items><Item>a</Item><Item>b</Item></Items>"))
    {
        var serializer = new XmlSerializer(typeof(Container));

        var items = (Container)serializer.Deserialize(stream);

        items.Dump();
    }
}

[XmlRoot("Items")]
public class Container
{
    [XmlElement("Item")]
    public List<string> Items { get; set; }
}

XDocumentを使用する別の方法は次のとおりです

void Main()
{
    var doc = XDocument.Parse("<Items><Item>a</Item><Item>b</Item></Items>");

    var list = doc.Element("Items").Elements("Item").Select (d => (string)d);

    list.Dump();
}
于 2012-04-08T15:35:14.573 に答える