查询以使用xpath获取具有特定值的元素

时间:2011-11-19 04:27:43

标签: java xml xpath

我怀疑是否有办法使用xpath从xml文档中获取具有特定值(文本)的元素。

示例doc:

<domain log-root="/logs" application-root="/applications"><resources>
<jdbc-resource pool-name="SamplePool" jndi-name="jdbc/sample" />
<jdbc-resource pool-name="TimerPool" jndi-name="abc">text1</jdbc-resource>
<jdbc-resource pool-name="TimerPool" jndi-name="def">text2</jdbc-resource>
<jdbc-resource pool-name="TimerPool" jndi-name="ghi">text3</jdbc-resource></resources</domain>

示例xPath查询:

/domain//jdbc-resource[@pool-name='TimerPool']/text()='text2'

如果有任何想法,请发表您的想法。

2 个答案:

答案 0 :(得分:3)

使用

/domain/*/jdbc-resource[@pool-name='TimerPool' and .='text2']

或者您可以使用:

/domain/*/jdbc-resource[@pool-name='TimerPool'][.='text2']

上述两个表达式选择所有jdbc-resource个元素,其pool-name属性为"TimerPoool"且其字符串值(jdbc-resource元素)的字符串值为{{1}这是XML文档顶级元素的孙子。

答案 1 :(得分:-1)

好吧,text()应该这样做。 http://www.w3schools.com/xpath/xpath_examples.asp

你有没试过吗?另外,检查路径,它可能是

//jdbc-resource[@pool-name='TimerPool']/text()='text2'

/domain/resource/jdbc-resource[@pool-name='TimerPool']/text()='text2'

//resource/jdbc-resource[@pool-name='TimerPool']/text()='text2'