代码之家  ›  专栏  ›  技术社区  ›  Matt Hanson

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

  •  1
  • Matt Hanson  · 技术社区  · 18 年前

    这是我的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 回复  |  直到 18 年前
        1
  •  1
  •   kitsune    18 年前

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

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

    然后循环遍历节点

        2
  •  1
  •   ckarras    18 年前
            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
            }
    
    推荐文章