使用XmlReader循环遍历子元素

时间:2016-10-03 08:57:22

标签: c# .net xmlreader

给出以下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,不读取条。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我不明白您为什么要在此处使用ReadStartElementReadEndElement方法。看看我的代码,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);
        }