问题
How do I target all elements in a document except a particular element name?
For example I want to exclude the terminate
elements. They can occur throughout the document.
<root>
<terminate attr="1" />
<other>
The brown fox jumps over the fence.
<terminate>
<b>stuff</b>
</terminate>
</other>
</root>
I've tried using the not(..)
operator without success likely because I'm using it wrong.
And frankly trying to Google 'not' is tough!
回答1:
The following xpath should work
/root/*[not(self::terminate)]
Also, i think you can do it with this as well
/root/*[not(name()='terminate')]
回答2:
If you are using XPath 2.0 you can use
/root/* except /root/terminate
Which does what you would expect. It matches for nodes that exist in the first sequence but not the second.
XPath 2.0 Specification - except operator
来源:https://stackoverflow.com/questions/4121539/xpath-to-get-all-child-elements-except-one-with-specific-name