Получить (текст) в XPath

У меня есть следующая структура DOM / HTML, я хочу получить (просто практикую...) отмеченные данные. enter image description here

тот, который находится под элементом h2. этот элемент div[@class="coordsAgence"] имеет еще несколько детей div ниже и еще несколько H2.. делаешь так:

div[@class="coordsAgence"]

получит это значение, но с дополнительным ненужным текстом. обновление: значение (из этого примера), которое я в основном хочу, это: текст "GALLIER Dennis".

2 ответов


Кажется, вы хотите первый текстовый узел в этом div:

div[@class="coordsAgence"]/text()[1]

должны сделать это.

обратите внимание, что это предполагает, что на самом деле нет пробелов между этими комментариями внутри <div class="coordsAgence">; в противном случае эти пробелы будут составлять дополнительные текстовые узлы, которые вам придется учитывать.


получить первый текстовый узел после первого h2 на div класс "coordsAgence":

div[@class='coordsAgence']/h2[1]/following-sibling::text()[1]

отметим, что это первое выражение возвращает первый текстовый узел после первого h2 даже когда между ними появляется какой-то другой узел. Если вы хотите вернуть текст только тогда, когда это узел, который тут после первого h2, тогда попробуйте что-то вроде этого:

div[@class='coordsAgence']/h2[1][following-sibling::node()[1][self::text()]]/following-sibling::text()[1]