Подтвердить что ты не робот

Как получить node значение /innerHTML с помощью XPath?

У меня есть XPath для выбора класса, который я хочу: //div[@class='myclass']. Но он возвращает мне весь div (также с <div class='myclass'>, но я хотел бы вернуть только содержимое этого тега без самого тега. Как я могу это сделать?

4b9b3361

Ответ 1

С помощью xpath вещь, которую вы получите, является последней вещью в пути, которая не является условием. Что это значит? Ну, условия - это материал между [] (но вы уже это знали), а ваш читает как pathElement [, у которого есть атрибут 'class' со значением 'my class']. Элемент pathElement находится непосредственно перед [.

Все вещи вне [], тогда это путь, поэтому в //a/b/c[@blah='bleh']/d a, b, c и d все элементы пути, blah - это атрибут и bleh буквальное значение. Если этот путь совпадает с ним, он вернет вам d, последнюю вещь, не относящуюся к условию.

Ваш конкретный путь возвращает (серию) div, являясь последней вещью в вашем пути xpath. Таким образом, это возвращаемое значение включает в себя верхний уровень node (ы), div в вашем случае и под ним (их) все его (их) дети. Узлами могут быть элементы или текст (или комментарии, инструкции по обработке,...).

Под node могут быть несколько текстовых узлов, поэтому обсуждается массив pOcHa. x/text() возвращает весь текст, являющийся прямым дочерним элементом x, x/node() возвращает все дочерние узлы, включая текст.

Надеюсь, что это поможет.

Ответ 2

node() = innerXml

text() = innerText

оба являются массивами, поэтому text() [1] - это первый детский текст node...

Ответ 3

Новый ответ на старый, часто задаваемый вопрос:

Для этого XML

<div class="myclass">content</div>

вы можете использовать XPath для выбора только content одним из двух способов:

  • Текст Node Выбор

    Этот XPath,

    //div[@class='myclass']/text()
    

    выберет текст Node дочерних элементов целевого элемента div content, как было запрошено.

  • Строковое значение элемента

    Этот XPath,

    string(//div[@class='myclass'])
    

    вернет string-value целевого элемента div, content, снова в соответствии с запросом.

    Дополнительная информация: здесь отметить объяснение строковых значений элементов:

    string-value элемента Node является конкатенацией string-value всего текста Node descendants элемента Node в порядке документа.

Ответ 4

Вы можете попробовать

//ДИВ [@ class= 'MyClass']/ребенок:: *

child:: * выбирает всех дочерних элементов контекста node Подробнее