gpt4 book ai didi

c# - 如何反序列化具有许多子节点的 XML

转载 作者:数据小太阳 更新时间:2023-10-29 01:56:43 25 4
gpt4 key购买 nike

如果我的 XML 是这样的:

<Item>
<Name>Jerry</Name>
<Array>
<Item>
<Name>Joe</Name>
</Item>
<Item>
<Name>Sam</Name>
</Item>
</Array>
</Item>

我可以将它序列化到这个类中:

[DataContract(Namespace = "", Name = "dict")]
public class Item
{
[DataMember(Name = "Name")]
public string Name { get; set; }
[DataMember(Name = "Array")]
public IEnumerable<Item> Children { get; set; }
}

但是如果我的 XML 是这样的呢?

<Item>
<Name>Jerry</Name>
<Item>
<Name>Joe</Name>
</Item>
<Item>
<Name>Sam</Name>
</Item>
</Item>

这不起作用:

[DataContract(Namespace = "", Name = "Item")]
public class Item
{
[DataMember(Name = "Name")]
public string Name { get; set; }
[DataMember(Name = "Item")]
public IEnumerable<Item> Children { get; set; }
}

怎样装饰类(class)才是正确的?

最佳答案

如果你想控制 xml,那么 XmlSerializer 是可行的方法,而不是 DataContractSerializer。后者只是缺少 XmlSerializer 提供的细粒度控制;在这种情况下,对于列表/数组布局之类的东西 - 但即使只是 xml 属性 也是 DataContractSerializer 的问题。然后就是:

public class Item {
public string Name { get; set; }
[XmlElement("Item")]
public List<Item> Children { get; set; }
}
public class Item {
public string Name { get; set; }
}

和:

var serializer = new XmlSerializer(typeof(Item));
var item = (Item) serializer.Deserialize(source);

关于c# - 如何反序列化具有许多子节点的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8219700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com