我有一个名为XPathNodeIterator的_xpCategories,它保存这样的数据
<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。我做了一些这样的代码。
while (_xpCategories.MoveNext())
{
Console.WriteLine(_xpCategories.Current.SelectSingleNode("id"));
}但是这个循环只工作一个,只有第一个类别id正在得到,然后它存在loop.Can
发布于 2013-10-10 12:19:25
您需要修改您的XPath表达式,以选择文档中的所有类别,而不管它们在文档中的位置,因为您有一个带有子类别的父类别,然后在这些子类别中有子类别。
/root/category --这将只选择具有多个子节点的父类别节点(1个节点)。
//category -这应该选择XML中的所有类别,而不管它们出现在哪里。
查看这里和这里以获得更多帮助
发布于 2013-10-10 12:11:35
您可以在XPathNavigator中使用XPathNodeIterator,如下所示
(修改后的示例从这里开始)
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);https://stackoverflow.com/questions/19295044
复制相似问题