问题描述
<td>
<span class="x-cell">something</span>
<span class="y-cell">something</span>
<span class="z-cell">something</span>
A text
<span class="foo"/>
Another text
<span class="bar"/>
Also text
</td>
我尝试选择<span class="z-cell"/>
之后的所有节点,以将它们移动到另一个节点。但是td
中的所有节点都是可选的,我可以有零到三个<span class="*-cell"/>
,文本是可选的,并且在文本的中间/开始/结尾可以有另外的<span>
个节点是否。
简而言之,我必须将<span class="*-cell"/>
以外的所有节点移至另一个节点。我尝试使用XPath选择节点:
td/span[contains(@class,"-cell")][last()]/following-sibling::*
,但如果没有任何<span class="*-cell"/>
节点,则它不起作用。我该怎么解决?
解决方法
让xpath表达式排除所有不需要的元素:
td/(*[not(contains(@class,"-cell"))]|text())
如果您只想复制没有中间文本的元素,则简化为
td/*[not(contains(@class,"-cell"))]
XPathTester上的实时演示