получить доступ к элементу html с помощью xpath - PullRequest
7 голосов
/ 22 июня 2009

вы можете использовать xpath для доступа к элементу HTML?

Он должен работать в Internet Explorer, и я пишу его в JavaScript

Я пытаюсь получить значение определенного поля ввода в определенной строке, но мне не нужно перебирать все ячейки, чтобы получить правильную

Любая помощь будет оценена

Эмма

Ответы [ 4 ]

13 голосов
/ 06 июня 2010

Вы можете использовать следующее для доступа к элементу с известным XPATH

document.evaluate ("X_PATH_EXPRESSION", document, null, XPathResult.ANY_TYPE, null) .iterateNext ()

Например, для доступа к элементу с идентификатором myID

document.evaluate ("// * [@ id = 'myID']", document, null, XPathResult.ANY_TYPE, null) .iterateNext ()

Я проверял это с Firefox 3.6

4 голосов
/ 22 июня 2009

К сожалению, вы не можете использовать XPath только с Javascript и HTML, но большинство Javascript-фреймворков имеют селекторы, которые предоставляют вам XPath-подобные функции (например, jQuery )

edit: Существуют специфичные для браузера xpath apis, которые вы можете использовать, но я бы не рекомендовал использовать их без абстракций.

1 голос
/ 22 июня 2009

Если HTML является XHTML-совместимым, то технически должен быть возможен доступ к элементам через XPath. Но в целом, похоже, это не так хорошо работает. Тем более, что вы хотите сделать это на стороне клиента, с любой библиотекой XPath, установленной на клиентском компьютере. Не очень полезно и может потерпеть неудачу.

Однако в HTML вы можете указать классы и имена для идентификации определенных элементов на вашей странице, а в JavaScript есть множество функций, которые могут просто использовать эти методы. См. http://onlinetools.org/articles/unobtrusivejavascript/chapter2.html для простого примера. По сути, JavaScript имеет встроенную поддержку HTML DOM, но не XML DOM.

1 голос
/ 22 июня 2009

В IE запросы xpath выполняются с использованием:

xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.load("books.xml");

xmlDoc.selectNodes(xpath);

См. http://www.w3schools.com/XPath/xpath_examples.asp

Однако , это работает только для xml. Для запросов xpath по html вам нужна сторонняя библиотека, такая как http://dev.abiss.gr/sarissa/

Также см. Различные результаты выбора элементов HTML с XPath в Firefox и Internet Explorer для предыдущего связанного обсуждения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...