2014-01-10 65 views
1

对于以下XML:的Java XPathExpression的子元素使用父元素的XPath参数

<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> 

我怎样才能得到这本书的作者“保罗”上面的<version>值,使用这种类型的符号来构建Java XPathExpression:

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

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

谢谢!

+0

[XPath for Child Element使用父元素作为XPath参数的可能重复r](http://stackoverflow.com/questions/21034950/xpath-for-child-element-using-parent-element-as-xpath-parameter) – 2014-01-10 02:16:16

+0

自身的重复? – fuzzyanalysis

+1

你提交了两次。 – 2014-01-10 02:19:46

回答

2

此XPath会得到一本书的版本,那里是在与价值“保罗”的author元素:

//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> 
+0

谢谢。这是XPath,这非常棒。现在我正在寻找用于构建基于此XPath的Java XPathExpression的表达式(以前未指定的道歉)。 – fuzzyanalysis

+0

我不做java。这可能是最好的问一个新的问题。 – 2014-01-10 02:20:06

+1

没想到您的答案能够编译成XPathExpression,但它确实如此。干杯 – fuzzyanalysis