使用Xpath选择特定跨度后的blockquote

时间:2011-06-29 07:43:29

标签: iphone objective-c xml xpath

所以,目前我正在使用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>

我将如何做到这一点?

2 个答案:

答案 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。 结果:

  1. 的text1
  2. 文本
  3. 所以你看,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()