给出以下xml(示例):
<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();
}
如果我像这样运行它,我得到了一个异常
'Element'是无效的XmlNodeType。在reader.ReadEndElement();
如果删除最后一行,则只执行一次while。正确处理foo,不读取条。
有什么想法吗?
答案 0 :(得分:0)
我不明白您为什么要在此处使用ReadStartElement
和ReadEndElement
方法。看看我的代码,Read
方法将读者推进到下一个元素并返回true,直到XML文档中剩下更多元素,因此它完全符合您的要求。
reader.ReadToFollowing("root");
if (reader.HasAttributes) { /* not relevant in this usecase*/ }
while (reader.Read())
{
var elementName = reader.LocalName;
var value = reader.ReadElementContentAsString();
//Process(elementName, value);
}