我遇到了一个非常简单的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/)。
在此先感谢您的帮助。