использование XPath для нахождения узла под узлом контекста не работает (Firefox/поджигатель/JavaScript)

Я хочу извлечь информацию из веб-страницы.

Страница имеет m узлы, которые могут быть найдены .evaluate ("//отделение [@class ='news']", документ....).

Для каждого из вышеупомянутых узлов существует 3 узла в них. У каждого из них есть различный @class селектор. И я хочу извлечь эти m записи с 3 кортежами.

Я пытался использовать .evaluate () функция, как проинструктировано в

https://developer.mozilla.org/en/Introduction_to_using_XPath_in_JavaScript

при помощи этого кода

parentNodes = document.evaluate("//div[@class='news']", document, ....).
while (true){
   var node = parentNodes.iterateNext();
   var child = document.evaluate("//div[@class='title']", node, ....). 
   ...
}

Однако "ребенок" всегда присваивается первому узлу в документе вместо первого узла в "узле".

Я выполнил это в консоли поджигателя.

Кто-либо знает что случилось?

12
задан manova 7 March 2010 в 23:29
поделиться

2 ответа

вы вызываете оценку для документа. Следовательно, выражение XPath оценивается из корня дерева XML. Кроме того, если вы хотите, чтобы XPath выбирал узел из текущего контекста, например. среди дочерних элементов текущего узла вы должны использовать контекстный селектор ".//"

18
ответ дан 2 December 2019 в 06:26
поделиться

Если вы начинаете выражение XPath с «/», то вы начинаете с корневого узла / узла документа контекстного узла. Поэтому вместо "// div [@class = 'title']" используйте «Потомок :: div [@class = 'title']" , таким образом вы выбираете дочерние элементы div контекстного узла.

6
ответ дан 2 December 2019 в 06:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: