2008-09-23 5 views
0

Ceci est un exemple (modifié légèrement, mais vous voyez l'idée) de mon fichier XML:Comment utiliser XPathNodeIterator pour parcourir une liste d'éléments dans un fichier 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> 

Quand mon application (application VB.NET) des charges, je veux faire une boucle dans la liste des hôtes et leur attributs et les ajouter à une collection. J'espérais pouvoir utiliser XPathNodeIterator pour cela. Les exemples que j'ai trouvés en ligne semblaient un peu brouillés, et j'espère que quelqu'un ici pourra éclaircir un peu les choses.

Répondre

1

Vous pouvez les charger dans un XmlDocument et utiliser une instruction XPath pour remplir un NodeList ...

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

ensuite en boucle à travers les nœuds

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 
     } 
Questions connexes