我使用System.Xml.Serialization库来反序列化包含一组节点的XML结构。当没有节点时,我得到数组的值为null,但我希望默认值为空数组。实现这一目标的最佳方法是什么?我试图使用属性的默认值,但这似乎不适用于数组。
这是我试图反序列化的数据结构:
public class MyData
{
[System.Xml.Serialization.XmlElement("Node")]
public Node[] Nodes { get; set; } = new Node[] {};
}
public class Node
{
public string Id { get; set; } = "DefaultId";
}
反序列化以下XML在Nodes属性中给出了一个空值:
<MyData/>
反序列化以下XML给出了一个长度为1的数组,其中元素的Id设置为&#34; DefaultId&#34;。
<MyData> <Node/> </MyData>
答案 0 :(得分:1)
它不是特定的反序列化问题 - 只需创建一个支持私有变量并在需要时更改您的Getter以创建默认值。
public class MyData
{
private Node[] nodes = null;
[System.Xml.Serialization.XmlElement("Node")]
public Node[] Nodes
{
get {
if(nodes == null)
{
nodes = new Node[];
}
return nodes;
}
set { nodes = value ; }
}
}