C# 将XML反序列化为对象并忽略某些节点

C# 将XML反序列化为对象并忽略某些节点,c#,xml,xml-serialization,C#,Xml,Xml Serialization,我有带节点的XML字符串: MyXmlString="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><MyNodes><Node1 /><Node2 /><Node3 /></MyNodes>"; 当我从XML反序列化到对象时,我想跳过字符串中的Node2: MyClass MyObject= XElement.Parse(MyXmlString).

我有带节点的XML字符串:

MyXmlString="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><MyNodes><Node1 /><Node2 /><Node3 /></MyNodes>";
当我从XML反序列化到对象时,我想跳过字符串中的Node2:

MyClass MyObject= XElement.Parse(MyXmlString).FromXml<MyClass>();
MyClass MyObject=XElement.Parse(MyXmlString.FromXml();
MyObject
Node1
有值,但
Node3
为空,即使
xmlString
对其有值。
我可以在将某些对象序列化为Xml时使用xmlIgnore。但我的情况正好相反——xml有我不需要的节点。最简单的方法是什么

如果删除
Order
属性,将获得Node3的值,
XmlSerializer
将忽略Node2。如果你真的不需要订购,你不应该使用它


在这里查找非常类似的情况:

如果这是您的xml,则它是无效的xml我为示例编写了一些虚构的xml。我必须更正它,以便更清楚。谢谢通知。我不能移动订单属性。我怎样才能将than node2添加到我的类定义中,因为我不知道它的类型(它是一个数组,包含未知类型的子元素),只作为对象类型使用。比如:[DataMember][XmlIgnore(“node2”,Order=20)]public object[]node2{get;set;}我想,您可以将它添加为[xmlement(“node2,Order=15)]public object node2{get;set;}用简单的xml就可以了。@Simon为什么你不能删除order属性?这就是阻止它工作的原因。我看不出它们在做任何有助于你的事情。谢谢。我已经将所有缺少的节点添加到类定义中,现在它可以工作了。order属性可能是出于某种原因存在的(这不是我的代码).所以,最好还是把它留在那里。
MyClass MyObject= XElement.Parse(MyXmlString).FromXml<MyClass>();