2010-03-23 47 views
2

我已經將一個xml文件反序列化爲一個C#對象,並且有一個包含從此文件中選擇的特定節點的「對象」。反序列化xml - 檢查是否有子節點而不知道具體的類型

我需要檢查此節點是否有子節點。我不知道在任何特定時間對象的具體類型。

目前我只是將對象重新序列化爲一個字符串,然後在檢查HasChildNodes屬性之前將其加載到XmlDocument中,但是當我有成千上萬的節點來檢查時,這是非常耗費資源和很慢的。

任何人都可以想到一個更好的方法,我可以檢查,如果我有對象,包含子節點?

非常感謝:)

回答

1

嘗試使用Linq2xml,它有一個名爲的XElement(或的XDocument類),這是更容易使用,然後XmlDocument的。 是這樣的:

XElement x = XElement.Load("myfile.xml"); 
if (x.Nodes.Count() > 0) 
{ 
    // do whatever 
} 

更少的代碼,更光滑,非常具有可讀性。 如果您已將xml作爲字符串,則可以使用Parse函數替換Load。

1

我想你可以逆轉這一過程(看着未標記[XmlIgnore]所有公共成員/屬性,不null,並沒有public bool ShouldSerialize*()返回false或任何其他模式),但是這似乎是一個很多工作 ...

+0

@Marc Gavel感謝您的回答,但是我一直在尋找快速簡單的東西。如果沒有這樣的事情,那麼我想我不會打擾重寫,只是咧嘴笑,忍耐:) 乾杯! – AndrewC 2010-03-23 12:27:27

相關問題