2017-01-16 36 views
1

我有XML字符串:反序列化的XML对象,并忽略一些节点与节点

MyXmlString="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><MyNodes><Node1 /><Node2 /><Node3 /></MyNodes>"; 

而且我有类:

public class MyClass 
{ 
    [DataMember] 
    [XmlElement("Node1", Order = 10)] 
    public String Node1 { get; set; } 

    [DataMember] 
    [XmlElement("Node3", Order = 20)] 
    public String Node3 { get; set; } 
} 

当我从XML反序列化对象,我想跳过节点2里面的字符串:

MyClass MyObject= XElement.Parse(MyXmlString).FromXml<MyClass>(); 

MyObjectNode1价值,但Node3为空,即使xmlString对它有价值。 我可以在将某些对象序列化到Xml时使用xmlIgnore。但我的情况是相反的 - xml有我不需要的节点。最简单的方法是什么?

+0

如果这是你的xml这不是有效的XML – Jonesopolis

+0

我已经写了样本只是一些虚构的XML。我有正确的更清楚。感谢您的通知。 – Simon

回答

1

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

看看这里非常类似的事例:XmlSerializer. Skip xml unknown node

+0

我无法移动订单属性。我怎么能比node2添加到我的类定义,因为我不知道它是类型(它是具有未知类型的子元素的数组),只是用作对象类型。如: [DataMember] [XmlIgnore(“Node2 “,Order = 20)] public Object [] Node2 {get;组; } – Simon

+0

我想,你可以将它添加为\t [XmlElement(“Node2”,Order = 15)] \t public object Node2 {get;组; } 与您的简单的xml它的作品。 –

+0

@Simon为什么你不能删除订单属性?这就是阻止这个工作的原因。我看不到他们正在做任何可以帮助你的事情。 –