Comment puis-je obtenir la valeur de l'élément de XPathNodeIterator?
-
10-10-2019 - |
Question
Lorsque je tente de code comme ceci,
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>
.....
J'ai trouvé quand j'utiliser la méthode while
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.
La solution
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é vers extraction données de xml. Si vous voulez lire le fichier XML entier, vous devriez considérer XmlReader (très rapide, en avant uniquement) ou XDocument (facile à utiliser).