2017-01-16 54 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爲什麼你不能刪除訂單屬性?這就是阻止這個工作的原因。我看不到他們正在做任何可以幫助你的事情。 –