跳过元素/加入匹配的XPath问题
以下是数据:跳过元素/加入匹配的XPath问题,xpath,Xpath,以下是数据: <p> <span class="z">XXX</span><br/> 123456<br/> 78910</p> XXX 123456 78910 到处都是空白和换行符。 我只需要获得跳过span元素的“12345678910”。 当我运行xpath:'//p/text()'时,我得到了3个匹配项:第一个匹配项是一组空格和换行符,第二个匹配项是123456,第三个匹配项是78910。 是否有其他方法跳过
<p>
<span class="z">XXX</span><br/>
123456<br/>
78910</p>
XXX
123456
78910
到处都是空白和换行符。
我只需要获得跳过span元素的“
123456
78910
”。
当我运行xpath:'//p/text()'时,我得到了3个匹配项:第一个匹配项是一组空格和换行符,第二个匹配项是123456,第三个匹配项是78910。是否有其他方法跳过跨度元素?是否可以以某种方式加入匹配项?看起来您正在尝试选择
span
元素之后的每个节点:
/p/span/following-sibling::node()
如果希望文本节点子节点不包含空格,则只包含文本节点:
/p/text()[normalize-space()]
使用:
/p/node()[not(self::span) and (not(self::text[not(normalize-space())]))]
这将选择顶部元素
p
的子元素返回的所有节点,如果它们是文本节点,则它们不仅仅是空白。/p/span/以下同级::node()[normalize-space()]和/p/text()[normalize-space()]返回了2个匹配项,现在没有匹配项与空格匹配,但我需要加入这两个匹配项好的问题,+1。有关选择所需节点的XPath表达式,请参见我的答案。:)你说的“加入匹配”是什么意思?它给了我5个匹配-3个只有空格,2个有文本,但我需要在1个匹配中加入它们。这可能吗?@Desecho:XPath表达式选择节点——它不能从多个节点中选择一个节点,因为XPath是一种查询语言,不会修改XML文档。