Как использовать XPathNodeIterator для перебора списка элементов в XML-файле? - PullRequest
0 голосов
/ 23 сентября 2008

Это пример (немного отредактированный, но вы поняли) моего 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 ]

1 голос
/ 23 сентября 2008
        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
        }
1 голос
/ 23 сентября 2008

Вы можете загрузить их в XmlDocument и использовать оператор XPath для заполнения NodeList ...

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

Затем цикл по узлам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...