2010-07-14 4 views
1

J'ai document XML qui est quelque chose commeC# XPathNavigator retourne la chaîne de toutes les valeurs au lieu de valeurs

<X><Y><Values><double>1.0</double><double>2.0</double></Values>... 

Je suis en train d'obtenir ces valeurs:

toXpath.MoveToRoot(); // the X node name could be different 
toXpath.MoveToFirstChild(); // this should be Y 

string q = "Y/Values"; 
foreach (XPathNavigator x in toXpath.Select(q)) 

En x.Value je reçois quelque chose comme "1.02.0"

+0

Il est en effet le retour des valeurs, mais il mettre les deux valeurs en x. Je n'ai pas utilisé xpath en C#, donc je ne suis pas sûr de ce que vous devez faire. –

+0

S'il vous plaît fournir plus d'informations – SAK

+0

Je parie que la même chose se produit avec un programme VB.NET, ce qui en ferait le .NET XPathNavigator, pas le C# XPathNavigator. –

Répondre

1
Y/Values 

sélectionne un seul élément nommé Values et enfant de l'élément Y qui est un enfant de l'élément supérieur X.

string q = "Y/Values";  
foreach (XPathNavigator x in toXpath.Select(q)) 

Parce que l'expression XPath sélectionne un seul nœud, vous n'avez pas besoin foreach ...

In x.Value I get something like "1.02.0" 

C'est exactement ce que vous devriez obtenir. La valeur d'un nœud est la concaténation de tous ses descendants de nœuds de texte.

Très probablement, vous voulez:

Y/Values/double 
+0

"Parce que l'expression XPath ne sélectionne qu'un seul nœud, vous n'avez pas besoin d'un foreach ..." - comment est-ce que je parcours tous les enfants d'un nœud sélectionné? –

+1

@Bobb: Vous ajoutez à l'expression qui sélectionne ce noeud '/ *' et ceci sélectionnera tous les éléments-enfants du noeud. :) –

Questions connexes