Xpath найти узел, используя существующий узел - PullRequest
0 голосов
/ 08 мая 2018

Не могли бы вы помочь мне найти узел "c" по узлу "b" без перезаписи xpath?

<a><b><c> </c></b></a>

т.е. Мое текущее решение:

node_b = xpath('a/b');
node_c = xpath('a/b/c').

Теперь я ищу решение, которое может найти node_c по

xpath(node_b + '/c')

или что-то в этом роде. То есть вставлять variable( node_b ) в xpath.

1 Ответ

0 голосов
/ 08 мая 2018

Я расширил ваш пример, чтобы иметь возможность различать узел c, который находится в узле a/b, и узел c, который не является.

function xpath_by_string (xml)
{
  dom = (new DOMParser()).parseFromString(xml, "text/xml");
  return function (expr, node)
  {
    if (!node) { node = dom; }
    return dom.evaluate (expr, node, null,
                         XPathResult.UNORDERED_NODE_ITERATOR_TYPE,
                         null)
      .iterateNext();
  };
}

var xpath = xpath_by_string ("<a><c class='not_in_b'></c><b><c class='in_b'></c></b></a>");

С помощью вышеуказанного кода вы можете выбрать c относительно a/b с помощью:

xpath ('c', xpath ('a/b'))

Проверено в Firefox.

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