Селектор Nodejs xpath с идентификатором элемента и вложенными элементами не работает - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" class="lang-ru">
<head></head>
<body>
<div id="content">
    root
    <div>first</div>
    <div>second</div>
</div>
</body>
</html>

Использование этого селектора возвращает три вложенных элемента, как и ожидалось: //*[@id="content"]/*

, но я пытаюсь применить этот селектор, чтобы вернуть только первый вложенный div: //*[@id="content"]/div[1] и список возвращаемых узлов пуст

этот селектор для возврата обоих div'ов тоже не работает: //*[@id="content"]/div

Как мне получить первый вложенный div, содержащий first, икак я могу иметь все вложенные элементы div и нет других элементов, таких как p.

Вот проблема

1 Ответ

0 голосов
/ 26 февраля 2019

Это потому, что вы связываете <html> с пространством имен xmlns="http://www.w3.org/1999/xhtml".Удаление этого атрибута заставляет его работать.

В качестве альтернативы вы можете указать xpath использовать это пространство имен следующим образом:

const select = xpath.useNamespaces({mynamespace: "http://www.w3.org/1999/xhtml"});
const nodes = select('//mynamespace:div', doc);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...