xpathНачало работы с xpath


замечания

XPath - это язык для адресации частей документа XML.

Он используется в XSLT и является подмножеством XQuery. Библиотеки доступны для большинства других языков программирования.

XPath является международным стандартом со спецификациями, опубликованными W3C:

Версии

Версия Дата выхода
1,0 1999-12-16
2,0 2007-01-23
3.0 2014-04-08
3.1 (Рекомендация кандидата W3C) 2015-12-17

Общие операции HTML

Если входной HTML DOM

<html>
    <body>
        <a>link</a>
        <div class='container' id='divone'>
            <p class='common' id='enclosedone'>Element One</p>
            <p class='common' id='enclosedtwo'>Element Two</p>
        </div>
    </body>
</html>
 

Найти элемент с определенным идентификатором на всей странице

//*[@id='divone'] # Returns <div class='container' id='divone'>
 

Найти элемент с определенным идентификатором в определенном пути

/html/body/div/p[@id='enclosedone'] # Returns <p class='common' id='enclosedone'>Element One</p>
 

Выберите элемент с определенным идентификатором и классом

//p[@id='enclosedone' and @class='common'] # Returns <p class='common' id='enclosedone'>Element One</p>
 

Выберите текст определенного элемента

//*[@id='enclosedone']/text() # Returns Element One
 

Пример XML (без пространств имен)

Вот пример XML-образца, в отношении которого можно написать XPaths:

<r>
  <e a="1"/>
  <f a="2" b="1">Text 1</f>
  <f/>
  <g>
    <i c="2">Text 2</i>
    Text 3
    <j>Text 4</j>
  </g>
</r>
 

Выберите элемент

Для образца XML (без пространств имен):

Этот XPath,

/r/e
 

выберет этот элемент:

<e a="1"/>
 

Выберите текст

Для образца XML (без пространств имен):

Этот XPath,

/r/f/text()
 

выберет текстовый узел с этим строковым значением:

"Text 1"
 

И этот XPath,

string(/r/f)
 

вернет строковое значение f , которое также:

"Text 1"
 

Тестирование Xpaths в консоли браузера

Быстрый способ протестировать ваш xpath находится в консоли разработчика.

Формат

   $x('//insert xpath here')
 

$ - указывает, что это селектор.

x - указывает, что он использует xpaths

Пример:

$x("//button[text() ='Submit']")
 

Когда эта команда будет введена, она вернет все вхождения элементов, которые являются кнопками с текстом, равным Submit.