我已經將一個xml文件反序列化爲一個C#對象,並且有一個包含從此文件中選擇的特定節點的「對象」。反序列化xml - 檢查是否有子節點而不知道具體的類型
我需要檢查此節點是否有子節點。我不知道在任何特定時間對象的具體類型。
目前我只是將對象重新序列化爲一個字符串,然後在檢查HasChildNodes屬性之前將其加載到XmlDocument中,但是當我有成千上萬的節點來檢查時,這是非常耗費資源和很慢的。
任何人都可以想到一個更好的方法,我可以檢查,如果我有對象,包含子節點?
非常感謝:)
我已經將一個xml文件反序列化爲一個C#對象,並且有一個包含從此文件中選擇的特定節點的「對象」。反序列化xml - 檢查是否有子節點而不知道具體的類型
我需要檢查此節點是否有子節點。我不知道在任何特定時間對象的具體類型。
目前我只是將對象重新序列化爲一個字符串,然後在檢查HasChildNodes屬性之前將其加載到XmlDocument中,但是當我有成千上萬的節點來檢查時,這是非常耗費資源和很慢的。
任何人都可以想到一個更好的方法,我可以檢查,如果我有對象,包含子節點?
非常感謝:)
嘗試使用Linq2xml,它有一個名爲的XElement(或的XDocument類),這是更容易使用,然後XmlDocument的。 是這樣的:
XElement x = XElement.Load("myfile.xml");
if (x.Nodes.Count() > 0)
{
// do whatever
}
更少的代碼,更光滑,非常具有可讀性。 如果您已將xml作爲字符串,則可以使用Parse函數替換Load。
我想你可以逆轉這一過程(看着未標記[XmlIgnore]
所有公共成員/屬性,不null
,並沒有public bool ShouldSerialize*()
返回false
或任何其他模式),但是這似乎是一個很多工作 ...
@Marc Gavel感謝您的回答,但是我一直在尋找快速簡單的東西。如果沒有這樣的事情,那麼我想我不會打擾重寫,只是咧嘴笑,忍耐:) 乾杯! – AndrewC 2010-03-23 12:27:27