[英]C# System.Xml.Serialization - use only <a></a> and never <a/>
[英]C# System.Xml.Serialization Self-nested elements
我试图反序列化
<graph>
<node>
<node>
<node></node>
</node>
</node>
<node>
<node>
<node></node>
</node>
</node>
</graph>
同
[XmlRoot("graph")]
class graph
{
List<Node> _children = new List<node>();
[XmlElement("node")]
public Node[] node
{
get { return _children.ToArray(); }
set { foreach(Node n in value) children.add(n) }
};
}
class Node
{
List<Node> _children = new List<node>();
[XmlElement("node")]
public Node[] node
{
get { return _children.ToArray(); }
set { foreach(Node n in value) children.add(n) }
};
}
但它一直说对象没有创建,尝试设置子节点时遇到空引用。 上面有什么问题?
提前谢谢〜
我无法重现你的错误。 我使用了以下代码:
string xml = @"<graph>
<node>
<node>
<node></node>
</node>
</node>
<node>
<node>
<node></node>
</node>
</node>
</graph>";
[XmlRoot("graph")]
public class graph
{
[XmlElement("node")]
public Node[] node;
}
public class Node
{
[XmlElement("node")]
public Node[] children;
}
XmlSerializer serializer = new XmlSerializer(typeof(graph));
using (MemoryStream stream = new MemoryStream())
using (StreamWriter writer = new StreamWriter(stream))
{
writer.Write(xml.Replace(Environment.NewLine, String.Empty));
writer.Flush();
stream.Position = 0;
var graph = serializer.Deserialize(stream) as graph;
}
你可以发布你用于反序列化的内容吗?
您发出的是在set handler(s)中,如果不是null则添加:
set { if(value != null) foreach(Node n in value) children.add(n) }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.