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

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

4 ответов


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

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

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

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

надеюсь, что это помогает.


node() = innerXml

text() = innerText

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


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

для этого XML

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

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

  1. Выбор Текстового Узла

    Этот XPath,

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

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

  2. строковое значение элемента

    Этот XPath,

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

    вернутся string-value целевой div элемент, content снова, как просили.

    дополнительная информация: вот такой Примечание объяснением string-values элементов:

    The string-value узла элемента является конкатенация string-values всего текстового узла потомки элемента узлов в порядке документа.


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

/ / div[@class= 'myclass'] / child::*

child:: * выбирает все дочерние элементы контекстного узла подробности