Теперь я прочитал много (возможно, все) сообщений об исключении элементов в XPath, и я просто не понимаю, как это работает. Я понятия не имею, почему. неXPath для исключения определенных элементов XML?
Скажем, я иметь следующую структуру:
<root>
<elemA>
Hello World!
</elemA>
<elemB>
This is awesome!
<elemC>Really!</elemC>
</elemB>
</root>
Нет Я хочу, чтобы все элементы, кроме elemC
.
Исходя из того, что я прочитал, я попробовал следующее XPath:
Вариант 1:
//*[not(self::elemC)]
Вариант 2:
//*[not(name()='elemC')]
Вариант 3:
//*[name()!='elemC']
У меня нет подсказки, почему это не работает, но подозревают какую-то глупую ошибку. Если я делаю точную противоположность (т. Е. Оставляя not
или !
), XPath правильно выбирает элемент elemC
.
Результат должен быть таким:
<root>
<elemA>
Hello World!
</elemA>
<elemB>
This is awesome!
</elemB>
</root>
Это хорошо выраженный вопрос, затрагивающий класс проблем, которые XPath (один) не может решить. См. [Мой ответ ниже] (http://stackoverflow.com/a/39640786/290085) для получения дополнительной информации. – kjhughes