使用父元素作为XPath参数的子元素的Java XPathExpression

时间:2014-01-10 02:03:37

标签: java xml xslt xpath xslt-1.0

对于以下xml:

<books>   
    <book>
       <author>Peter</author>
       <title>Tales from Somewhere</title>
       <data>
          <version>1</version>
       </data>
    </book>
    <book>
       <author>Paul</author>
       <title>Tales from Nowhere</title>
       <data>
          <version>2</version>
       </data>
    </book>
 </books>

如何使用此类表示法构建Java XPathExpression,获取上面的图书作者“Paul”的<version>值:

//*[local-name()='books']/*

我使用以下问题作为参考: Get first child node in XSLT using local-name()

谢谢!

1 个答案:

答案 0 :(得分:2)

这个XPath将获得一本书的版本,其中author元素的值为“Paul”:

//book[author="Paul"]/data/version

针对此XML运行时:

<books> 
  <book> 
    <author>Peter</author>  
    <title>Tales from Somewhere</title>  
    <data> 
      <version>1</version> 
    </data> 
  </book>  
  <book> 
    <author>Paul</author>  
    <title>Tales from Nowhere</title>  
    <data> 
      <version>2</version> 
    </data> 
  </book> 
  <book> 
    <author>Peter</author>  
    <author>Paul</author>  
    <title>How to write a book with a friend</title>  
    <data> 
      <version>7</version> 
    </data> 
  </book> 
</books>

你得到这个结果:

<version>1</version>
<version>7</version>