跳过元素/加入匹配的XPath问题

时间:2010-12-28 23:36:44

标签: xpath

这是数据:

<p>
<span class="z">XXX</span><br/>
123456<br/>
78910</p>

到处都有空格和换行符。 我只需要'<br/>123456<br/>78910'跳过span元素。 当我运行这个xpath时:'// p / text()'我得到3个匹配:第一个 - 一堆空格和换行符,第二个用123456,第三个用78910。
有没有其他方法可以跳过span元素?有可能以某种方式加入比赛吗?

2 个答案:

答案 0 :(得分:1)

看起来您正试图在span元素之后选择每个节点:

/p/span/following-sibling::node()

如果您希望没有空格的文本节点子节点只有文本节点:

/p/text()[normalize-space()]

答案 1 :(得分:1)

使用

/p/node()[not(self::span) and (not(self::text[not(normalize-space())]))]

这将选择顶部元素p的子节点的所有节点,如果它们是文本节点,则它们不仅仅是空白元素。