【发布时间】:2010-05-26 22:15:52
【问题描述】:
是否有一种 XPath 方法可以使用 XPath 查询直接恢复 XML 节点的先前兄弟节点的一个特定属性?
在以下示例中,我想检索标记为id=marker 的div 元素之前的每个img 节点的alt 属性值。
<content>
<img alt="1" src="file.gif" />
<img alt="2" src="file.gif" />
<img alt="3" src="file.gif" />
<img alt="4" src="file.gif" />
<div id='marker'></div>
</content>
对于这个例子,我想检索值1 2 3 4。
我使用以下 XPath 查询
//div[@id='marker']/preceding-sibling::img
为了检索我想要的节点列表
<img alt="1" src="file.gif"/>
<img alt="2" src="file.gif"/>
<img alt="3" src="file.gif"/>
<img alt="4" src="file.gif"/>
因为它是一个节点列表,所以我可以在节点上进行迭代以检索我正在寻找的属性值,但是有没有 XPath 方法呢? 我本来希望能够写出类似的东西:
//div[@id='marker']/preceding-sibling::img@alt
or //div[@id='marker']/preceding-sibling@alt::img
但我什至不知道一旦你使用了XPath Axe 像previous-sibling 这样是否有可能。
【问题讨论】:
-
@skaffman:请问您为什么删除了我的
sibling标签?