Javascript XPath в XML-документе с пространствами имен - PullRequest
1 голос
/ 25 сентября 2019

У меня проблема с очень простым XPath, но я не могу понять, почему он не работает.

Когда я ищу элемент с пространством имен, он работает как шарм, но для "Пространство имен по умолчанию (не знаю точного термина).

 var xmlString = `<?xml version="1.0" encoding="utf-8"?>
                  <h:html xmlns="http://www.w3.org/2002/xforms" xmlns:h="http://www.w3.org/1999/xhtml">
                    <h:ok>OK</h:ok>
                    <ko>KO</ko>
                  </h:html>`;


var doc = new DOMParser().parseFromString(xmlString, 'text/xml');
var rootNode = doc.documentElement;
var evaluator = new XPathEvaluator();
var resolver = evaluator.createNSResolver(rootNode);

var result1 = doc.evaluate('//h:ok', rootNode, resolver, XPathResult.ANY_TYPE, null);
var result1Next = result1.iterateNext();
alert(result1Next ? result1Next.innerHTML : 'not found'); // Works !

var result2 = doc.evaluate('//ko', rootNode, resolver, XPathResult.ANY_TYPE, null);
var result2Next = result2.iterateNext();
alert(result2Next ? result2Next.innerHTML : 'not found'); // Fail !

Я сделал скрипку (http://jsfiddle.net/1bon769r/).

Заранее благодарен за любую помощь.

1 Ответ

0 голосов
/ 25 сентября 2019

Наконец я нашел обходной путь, который подходит для моего варианта использования.

Я использую 'local-name ()', чтобы найти элемент без каких-либо критериев пространства имен.

Благодаря # 19438596

...