反序列化 XML 以反对并忽略某些节点
Deserialize XML to object and ignore some nodes
我有 XML 个节点字符串:
MyXmlString="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><MyNodes><Node1 /><Node2 /><Node3 /></MyNodes>";
我有 class:
public class MyClass
{
[DataMember]
[XmlElement("Node1", Order = 10)]
public String Node1 { get; set; }
[DataMember]
[XmlElement("Node3", Order = 20)]
public String Node3 { get; set; }
}
当我从 XML 反序列化到对象时,我想跳过 Node2 inside string:
MyClass MyObject= XElement.Parse(MyXmlString).FromXml<MyClass>();
MyObject
具有 Node1
的值,但 Node3
为空,即使 xmlString
具有它的值。
我可以在将某些对象序列化为 Xml 时使用 xmlIgnore。但我的情况恰恰相反——xml 有我不需要的节点。最简单的方法是什么?
如果删除 Order
属性,您将获得 Node3 的值,XmlSerializer
将忽略 Node2。如果您真的不需要订购,则不应使用它。
在此处查找非常相似的案例:XmlSerializer. Skip xml unknown node
我有 XML 个节点字符串:
MyXmlString="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><MyNodes><Node1 /><Node2 /><Node3 /></MyNodes>";
我有 class:
public class MyClass
{
[DataMember]
[XmlElement("Node1", Order = 10)]
public String Node1 { get; set; }
[DataMember]
[XmlElement("Node3", Order = 20)]
public String Node3 { get; set; }
}
当我从 XML 反序列化到对象时,我想跳过 Node2 inside string:
MyClass MyObject= XElement.Parse(MyXmlString).FromXml<MyClass>();
MyObject
具有 Node1
的值,但 Node3
为空,即使 xmlString
具有它的值。
我可以在将某些对象序列化为 Xml 时使用 xmlIgnore。但我的情况恰恰相反——xml 有我不需要的节点。最简单的方法是什么?
如果删除 Order
属性,您将获得 Node3 的值,XmlSerializer
将忽略 Node2。如果您真的不需要订购,则不应使用它。
在此处查找非常相似的案例:XmlSerializer. Skip xml unknown node