我想提取//pre
和//code
元素但排除//pre/code
. 例如:
<root>
<pre><code>foo</code></pre>
<code>bar</code>
<pre>baz</pre>
<span>ignore me<code>select me</code></span>
</root>
我想检索四个元素:
<pre><code>foo</code></pre>
<code>bar</code>
<pre>baz</pre>
<code>select me</code>
(而且我特别不想要<code>foo</code>
)
以下 xpath 似乎可以解决问题:
//*[(self::pre or self::code) and not (self::code and parent::pre)]
我不知道这是否是正确的方法,但它似乎有效。
有没有更简洁的方式来表达这一点(例如,不需要self::
and parent::
)?