简体   繁体   English

具有父级属性的XML反序列化

[英]XML Deserialization with Parent Attribute

I have an XML that looks like this: 我有一个看起来像这样的XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<Items>
  <Category Name="Alfa">
    <Item Name="A1" Signature="3136323700000000"/>
    <Item Name="A2" Signature="3136333400000000"/>
    <Item Name="A3" Signature="3136323800000000"/>
    <Item Name="A4" Signature="3136333300000000"/>
    ... More Items
  </Category>
  <Category Name="Beta">
    <Item Name="B1" Signature="3136323700000000"/>
    <Item Name="B2" Signature="3136333400000000"/>
    <Item Name="B3" Signature="3136323800000000"/>
    <Item Name="B4" Signature="3136333300000000"/>
    ... More Items
  </Category>
  ... More Categories
</Items>

The class I would like to use to deserialize it looks like this: 我想用来反序列化的类如下所示:

public sealed class Item
{
    private String m_Category;
    private String m_Name;
    private String m_Signature;

    public String Category
    {
        get { return m_Category; }
    }

    public String Name
    {
        get { return m_Name; }
    }

    public String Signature
    {
        get { return m_Signature; }
    }

    public Item(String category, String name, String signature)
    {
        m_Category = category;
        m_Name = name;
        m_Signature = signature;
    }
}

How can I deserialize it so that the Category property is taken from the parent element's Name attribute? 我如何反序列化它,以便Category属性取自父元素的Name属性? If it's not possible, which alternative method could I use? 如果不可能,我可以使用哪种替代方法?

How about using Linq To Xml? 如何使用Linq To Xml?

var items = XDocument.Parse(xml)
                .Descendants("Item")
                .Select(c => new Item(c.Parent.Attribute("Name").Value, 
                                      c.Attribute("Name").Value, 
                                      c.Attribute("Signature").Value))
                .ToList();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM