XPath按前一个元素的文本获取元素

时间:2016-06-30 19:49:37

标签: xml xpath

我需要根据前面的元素文本获取第二个元素(Description)的文本。

<world>
  <continent>europe</continent>
  <description>germany, france, italy, spain</description>
</world>
<world>
  <continent>asia</continent>
  <description>japan, thailand, china</description>
</world>
<world>
  <continent>africa</continent>
  <description>south africa, simbabwe, tansania</description>
</world>

的XPath:

//world[continent="africa"]/description

我尝试了几种变体,但没有任何效果。 任何想法?

2 个答案:

答案 0 :(得分:2)

此XPath,

//world[continent="africa"]/description/text()
通过添加包装根元素

应用于您的XML,使其格式良好

<r> 
  <world> 
    <continent>europe</continent>  
    <description>germany, france, italy, spain</description> 
  </world>  
  <world> 
    <continent>asia</continent>  
    <description>japan, thailand, china</description> 
  </world>  
  <world> 
    <continent>africa</continent>  
    <description>south africa, simbabwe, tansania</description> 
  </world> 
</r>

将产生

south africa, simbabwe, tansania
根据要求

答案 1 :(得分:1)

我认为应该是

//world/continent[text()="africa"]/following-sibling::description/text()

这意味着:通过文本内容获取continent节点等于“非洲”,并从那里获取下一个兄弟节点,这应该是描述。