2009-10-02 12 views
0

je reçois cette valeur de retour de Sharepoint ... que je viens d'inclure la première partie de l'extrait de code xml ...Xpath, la récupération de la valeur noeud

<Result ID=\"1,New\" xmlns=\"http://schemas.microsoft.com/sharepoint/soap/\"> 
<ErrorCode>0x00000000</ErrorCode><ID /><z:row ows_ID=\"9\" 

Il renseigne un objet nœud XmlNode.

Comment utiliser xPath puis-je obtenir la valeur de ows_id?

Mon code à ce jour ...

XmlNode résultats = list.UpdateListItems ("MySharePointList", lot);

Mise à jour

Jusqu'à présent, j'ai ceci:. Results.FirstChild.ChildNodes [2] .attributes [ "ows_ID"] Valeur

Mais je ne sais pas comment il est fiable, quelqu'un peut-il améliorer cela?

+0

Ce n'est pas exactement xpath mais simplement un accès DOM. L'utilisation d'une bibliothèque xpath traditionnelle vous laisserait avec une liste de nœuds correspondant à votre requête - essayez-le. – Shirkrin

Répondre

2

Je ne sais pas si elle nécessairement une amélioration, mais il pourrait être plus facile à lire, bien plus bavard:

/*[local-name() = 'Result']/*[local-name() = 'row']/@ows_ID 

Il est probablement plus au fragment que vous avez posté si cette requête XPath pourrait avoir besoin un correctif lorsqu'il est utilisé par rapport au résultat xml réel.

La fonction, nom-local(), vous permet d'ignorer les espaces de noms, qui peuvent être à la fois une aubaine et une malédiction.:)

0

Lorsque vous commencez à partir de la racine:

/Résultat/z: row/@ ows_ID

vous pouvez également améliorer la recherche si elle existe plusieurs Résultat:

/Résultat [@ ID = '1, New ']/z: row/@ ows_ID

0

Les appels xpath spécifiques dépendent de la bibliothèque que vous utilisez (par exemple, implémentation de libxml xpath). Mais la déclaration XPath générique serait:

"//z:row[@ows_ID='9']" 

Cela permet de sélectionner tous les z: nœuds de ligne avec un attribut ows_ID de valeur 9. Vous pouvez modifier cette requête pour correspondre à tous les z: nœuds de ligne ou seulement ceux qui ont attribut spécifique.

Pour plus de détails regarder ici: W3Schools XPath syntax

+0

Je ne connais pas la valeur de ows_id, c'est ce que je veux récupérer. Des idées sur la façon d'obtenir cette valeur en tant que chaîne? J'utilise C# –

0
<xsl:value-of select="Result/b:row/@ows_ID"/> 

ou

<xsl:value-of select="Result/b:row[@ows_ID = '9']"/> 

En fonction de la valeur que vous vouliez

0

Vous devez probablement vous assurer que le préfixe d'espace de noms z est déclarée correctement - c'est dépend de l'implémentation. Here's how you do it in Java's XPath implementation. Puis, pour sélectionner la valeur de l'attribut ows_ID, vous devez naviguer vers l'élément lui-même, puis utiliser @ows_ID pour obtenir la valeur.

Questions connexes