如何使用XPathNodeIterator迭代XML文件中的项列表?

时间:2008-09-23 19:29:44

标签: .net xml

这是我的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。我在网上找到的例子看起来有些混乱,我希望这里有人可以清理一下。

2 个答案:

答案 0 :(得分:1)

您可以将它们加载到XmlDocument中并使用XPath语句填充NodeList ...

Dim doc As XmlDocument = New XmlDocument()
doc.Load("hosts.xml")
Dim nodeList as XmlNodeList
nodeList = doc.SelectNodes("/HostCollectionInfo/Hosts/Host")

然后遍历节点

答案 1 :(得分:1)

        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
        }