在我正在處理的應用程序中,需要將一個XML文檔加載到內存中進行查詢。要做到這一點,我打電話XmlDocument.Load(string path)
,這一直工作正常。不過,我最近遇到了一些奇怪的行爲。XmlDocument.Load忽略元素?
我有一個生成的文件看起來像這樣(編輯刪除敏感數據):
*Snip*
<Info name="name2" parent="name1" modifier="A"/>
<Info name="name2" parent="name1" modifier="B"/>
<Info name="name1" modifier="A"/>
<Info name="name1" modifier="B"/>
<Info name="name3" parent="name2" modifier="A"/>
<Info name="name3" parent="name2" modifier="B"/>
*Snip*
上面有六個條目。但是,如果調用XmlDocument.Load
,則只加載4個條目,而將前兩個條目排除。我已經通過斷點確認了這一點,並通過了數據調試器。
然而,當我手動重新排列文件中的數據是
*Snip*
<Info name="name1" modifier="A"/>
<Info name="name1" modifier="B"/>
<Info name="name2" parent="name1" modifier="A"/>
<Info name="name2" parent="name1" modifier="B"/>
<Info name="name3" parent="name2" modifier="A"/>
<Info name="name3" parent="name2" modifier="B"/>
*Snip*
的所有數據被正確地加載,沒有元件被排除在外。 據我所知,文檔格式良好,加載時沒有拋出異常。還應該注意的是,當我爲所有條目人爲地添加一個parent
屬性時,它們都會正確加載,但是如果我正確理解了XML,那就沒有關係,它只會使代碼中缺失的屬性無效。此外,沒有爲任何元素指定名稱空間。
這是預期的行爲,還是我錯過了什麼? 如果需要,我可以提供更多細節。
原來你是對的,在別處有一個不相關的方法是刪除節點。我使用你的代碼來發現差異。謝謝! –