0
考慮下面的XML(例如):通過子元素循環使用的XmlReader
<root>
<foo>some data</foo>
<bar>some other data</bar>
</root>
我目前正在讀它:
reader.ReadToFollowing("root")
if(reader.HasAttributes) { /* not relevant in this usecase*/ }
while(reader.IsStartElement())
{
reader.ReadStartElement()
var elementName = reader.LocalName;
var value = reader.ReadElementContentAs(typeof(ExpectedType),null);
//Process(elementName, value);
reader.ReadEndElement();
}
如果我運行它像這樣,我得到了一個異常
'元素'是無效的XmlNodeType。在reader.ReadEndElement();
如果我刪除最後一行,則只執行一次。 foo被正確處理,bar不被讀取。
有什麼想法?
如果我這樣做,我必須跳過元素之間的WhitespaceNodes,並且我得到了「ReadElementContentAs方法在節點類型EndElement上不受支持」。在第二個元素上的ReadElementContentAsString()... –
嘗試在循環中跳過不是元素的所有東西:'if(reader.NodeType!= XmlNodeType.Element){continue; }' – sc3w
看起來ReadElementContentAsString()也將讀者定位在下一個元素上。它應該這樣做嗎?如果沒有,那麼我發現了一個我正在使用的平臺上的錯誤(我正在智能設備上使用.Net CF克隆)。 Thx,它會解釋很多:-s –