2010-12-08 45 views
1

Lorsque je tente de code comme cela,Comment puis-je obtenir la valeur de l'élément à partir de XPathNodeIterator?

XPathNodeIterator it; 

string selectStr = "Equipment/Group/item"; 
it = nav.Select(selectStr); 
while (it.MoveNext()) 
{ 
    String strVal = ""; 
    if (it.Current.HasChildren) 
    { 
     strVal = it.Current.Value.ToString(); // get wrong value here. I want to get 'COM' and 'MD' 
    } 
} 

Mon fichier Xml que ce

<Equipment xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <License licenseId="" licensePath=""/> 
    <Group> 
    <item> 
     <key>COM</key> 
     <value> 
     <format>10</format> 
     <value>0</value> 
     </value> 
    </item> 
    <item> 
     <key>MD</key> 
     <value> 
     <format>20</format> 
     <value>test</value> 
     </value> 
    </item> 
..... 

Je trouve quand j'utilise while méthode pour boucler tout le fichier xml est très pratique.

Mais je ne sais pas comment établir la relation pour obtenir la valeur d'élément lorsque je définissais un XPathNodeIterator comme ci-dessus?

En fait, je besoin de lire tout le fichier Xml à l'aide de XPathNodeIterator.

Répondre

1

Vous devez commencer une nouvelle itérateur pour chaque sous-noeud sélectionnant uniquement les sous-éléments. XPathNodeIterator et XPath en général est plus orientée vers l'extraction données de xml. Si vous voulez lire tout le fichier XML, vous devriez considérer XmlReader (très rapide, uniquement en avant) ou XDocument (facile à utiliser).

+0

Je vais essayer. Je vous remercie. –