首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环通过XPathNodeIterator不工作

循环通过XPathNodeIterator不工作
EN

Stack Overflow用户
提问于 2013-10-10 11:52:38
回答 2查看 739关注 0票数 0

我有一个名为XPathNodeIterator_xpCategories,它保存这样的数据

代码语言:javascript
复制
        <root>
      <category numberofproducts="0">
        <id>hoved</id>
        <url>/products/hovednavigation</url>
        <name>HOVEDNAVIGATION</name>
        <category numberofproducts="0">
          <id>embalfors</id>
          <url>/products/emballage-og-forsendelse</url>
          <name>Emballage og forsendelse</name>
          <category numberofproducts="0">
            <id>gaveindpak</id>
            <url>/products/gaveindpakning</url>
            <name>Gaveindpakning</name>
            <category numberofproducts="3">
              <id>cellofan</id>
              <url>/products/cellofan</url>
              <name>Cellofan</name>
            </category>
            <category numberofproducts="30">
              <id>gavebånd</id>
              <url>/products/gavebaand</url>
              <name>Gavebånd</name>
            </category>
          </category>
          <category numberofproducts="0">
            <id>kuvkonv</id>
            <url>/products/kuverter-og-konvolutter</url>
            <name>Kuverter og konvolutter</name>
          </category>
          </category>
      </category>
</root>

我想遍历这个xml中的每个类别,并打印每个类别的id。我做了一些这样的代码。

代码语言:javascript
复制
 while (_xpCategories.MoveNext())
    {
        Console.WriteLine(_xpCategories.Current.SelectSingleNode("id"));

    }

但是这个循环只工作一个,只有第一个类别id正在得到,然后它存在loop.Can

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-10 12:19:25

您需要修改您的XPath表达式,以选择文档中的所有类别,而不管它们在文档中的位置,因为您有一个带有子类别的父类别,然后在这些子类别中有子类别。

/root/category --这将只选择具有多个子节点的父类别节点(1个节点)。

//category -这应该选择XML中的所有类别,而不管它们出现在哪里。

查看这里这里以获得更多帮助

票数 1
EN

Stack Overflow用户

发布于 2013-10-10 12:11:35

您可以在XPathNavigator中使用XPathNodeIterator,如下所示

(修改后的示例从这里开始)

代码语言:javascript
复制
XPathDocument document = new XPathDocument("yourxml.xml");
XPathNavigator navigator = document.CreateNavigator();

XPathNodeIterator _xpCategories = navigator.Select("//category");
_xpCategories.MoveNext();

while (nodesText.MoveNext())
    Console.WriteLine(nodesText.Current.Value);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19295044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档