Jer*_*xon 5 c# xml serialization deserialization
如果我的XML是这样的:
<Item>
<Name>Jerry</Name>
<Array>
<Item>
<Name>Joe</Name>
</Item>
<Item>
<Name>Sam</Name>
</Item>
</Array>
</Item>
Run Code Online (Sandbox Code Playgroud)
我可以将它序列化为这个类:
[DataContract(Namespace = "", Name = "dict")]
public class Item
{
[DataMember(Name = "Name")]
public string Name { get; set; }
[DataMember(Name = "Array")]
public IEnumerable<Item> Children { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我的XML是这样的呢?
<Item>
<Name>Jerry</Name>
<Item>
<Name>Joe</Name>
</Item>
<Item>
<Name>Sam</Name>
</Item>
</Item>
Run Code Online (Sandbox Code Playgroud)
这不起作用:
[DataContract(Namespace = "", Name = "Item")]
public class Item
{
[DataMember(Name = "Name")]
public string Name { get; set; }
[DataMember(Name = "Item")]
public IEnumerable<Item> Children { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
装饰课程的正确方法是什么?
如果你想控制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; }
}
Run Code Online (Sandbox Code Playgroud)
和:
var serializer = new XmlSerializer(typeof(Item));
var item = (Item) serializer.Deserialize(source);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2361 次 |
| 最近记录: |