所以,目前我正在使用Xpath从blockquote标签中检索文本,但我需要能够选择SPECIFIC块引用。 我需要的两种类型之间的唯一区别是它们直接在跨度之后。 假设我需要互相获取text1和text2,这将是HTML:
<span id="1">some code here</span>
<blockquote>text1</blockquote>
more code in here
<span id="2">some code here</span>
<blockquote>text</blockquote>
我将如何做到这一点?
答案 0 :(得分:3)
假设我们有这个XML:
<root>
<span id="1 nothread">some code here</span>
<blockquote>text1</blockquote>
more code in here
<span id="2 nothread">some code here</span>
<blockquote>text</blockquote>
<span id="3">some code here</span>
<blockquote>text</blockquote>
<blockquote>not selected text</blockquote>
</root>
因此,此XPath://blockquote[local-name(preceding::*[1]) = 'span' and contains(preceding::*[1]/@id, 'nothread')]/node()
会选择所有blockquote
,如果它直接位于span之后且span / @ id包含nothread
。
结果:
所以你看,not selected text
未被选中
答案 1 :(得分:1)
我会用:
//span[starts-with(@id,'nothread')]/following::*[1][name()='blockquote']
这将获得所有想要的blockquote元素。
获取文本节点:
//span[starts-with(@id,'nothread')]/following::*[1][name()='blockquote']/text()