2012-01-01 6 views
0

je le document XML suivant:XPath numéro de requête

<places xmlns="http://where.yahooapis.com/v1/schema.rng" xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:start="0" yahoo:count="1" yahoo:total="1"> 
    <place yahoo:uri="http://where.yahooapis.com/v1/place/23424975" xml:lang="en-US"> 
     <woeid>23424975</woeid> 
     <placeTypeName code="12">Country</placeTypeName> 
     <name>United Kingdom</name> 
     <country type="Country" code="GB">United Kingdom</country> 
     <centroid> 
      <latitude>54.314072</latitude> 
      <longitude>-2.230010</longitude> 
     </centroid> 
     <boundingBox> 
      <southWest> 
       <latitude>49.162090</latitude> 
       <longitude>-13.413930</longitude> 
      </southWest> 
      <northEast> 
        <latitude>60.854691</latitude> 
       <longitude>1.768960</longitude> 
      </northEast> 
     </boundingBox> 
     <areaRank>11</areaRank> 
     <popRank>0</popRank> 
    </place> 
</places> 

J'essaie de saisir la valeur "woeid". Mais la requête XPath que j'utilise "/ places/place/woeid" ne le capture pas.

Des idées?

Merci.

Répondre

2

Vous devez spécifier un espace de noms dans votre requête. La façon dont vous configurez les espaces de noms dépend de votre implémentation XPath. Mais vous devez déclarer l'espace de noms http://where.yahooapis.com/v1/schema.rng et ensuite utiliser votre expression de chemin. Ainsi, si vous l'avez déclaré comme yahoo par exemple, votre expression XPath ressemblerait à /yahoo:places/yahoo:place/yahoo:woeid. Votre implémentation XPath peut également vous permettre de définir un espace de noms par défaut, auquel cas votre requête d'origine fonctionnerait correctement. Gardez à l'esprit qu'à cause de l'attribut xmlns sans préfixe d'espace de noms, tous les éléments inclus (non remplacés par leur propre espace de noms) appartiennent à cet espace de noms (celui de Yahoo). Donc, l'espace de noms fait vraiment partie du nom de l'élément. Comprendre comment fonctionnent les espaces de noms est vraiment important pour l'utilisation de XML.

1

Set espace de noms et préfixe (par exemple a) dans votre moteur XPath, utilisez:

a:places/a:place/a:woeid 

ou simplement:

*[local-name() = 'places']/*[local-name() = 'place']/*[local-name() = 'woeid']