如何使用XPathNodeIterator遍历XML文件中的项目列表?
时间:2020-03-06 14:37:18 来源:igfitidea点击:
这是我的XML文件的示例(稍作修改,但我们明白了):
<HostCollection>
<ApplicationInfo />
<Hosts>
<Host>
<Name>Test</Name>
<IP>192.168.1.1</IP>
</Host>
<Host>
<Name>Test</Name>
<IP>192.168.1.2</IP>
</Host>
</Hosts>
</HostCollection>
加载我的应用程序(VB.NET应用程序)时,我想遍历主机列表及其属性,并将它们添加到集合中。我希望可以为此使用XPathNodeIterator。我在网上找到的示例似乎有些混乱,我希望这里的人可以使事情变得更清楚。
解决方案
我们可以将它们加载到XmlDocument中,并使用XPath语句填充NodeList ...
Dim doc As XmlDocument = New XmlDocument()
doc.Load("hosts.xml")
Dim nodeList as XmlNodeList
nodeList = doc.SelectNodes("/HostCollectionInfo/Hosts/Host")
然后遍历节点
XPathDocument xpathDoc;
using (StreamReader input = ...)
{
xpathDoc = new XPathDocument(input);
}
XPathNavigator nav = xpathDoc.CreateNavigator();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(nav.NameTable);
XPathNodeIterator nodes = nav.Select("/HostCollection/Hosts/Host", nsmgr);
while (nodes.MoveNext())
{
// access the current Host with nodes.Current
}

