带有名称空间的XML文档中的Javascript XPath
我在使用非常简单的XPath时遇到了一个问题,但我不明白为什么它不起作用 当我搜索一个带有名称空间的元素时,它就像一个符咒,但搜索的是“默认”名称空间(不知道确切的术语)带有名称空间的XML文档中的Javascript XPath,javascript,xpath,xml-namespaces,Javascript,Xpath,Xml Namespaces,我在使用非常简单的XPath时遇到了一个问题,但我不明白为什么它不起作用 当我搜索一个带有名称空间的元素时,它就像一个符咒,但搜索的是“默认”名称空间(不知道确切的术语) var xmlString=` 好啊 击倒对手 `; var doc=new DOMParser().parseFromString(xmlString,'text/xml'); var rootNode=doc.documentElement; var evaluator=新的XPathEvaluator(); var re
var xmlString=`
好啊
击倒对手
`;
var doc=new DOMParser().parseFromString(xmlString,'text/xml');
var rootNode=doc.documentElement;
var evaluator=新的XPathEvaluator();
var resolver=evaluator.createNSResolver(rootNode);
var result1=doc.evaluate('//h:ok',rootNode,解析器,XPathResult.ANY_类型,null);
var result1Next=result1.iterateNext();
警报(result1Next?result1Next.innerHTML:“未找到”);//作品
var result2=doc.evaluate('//ko',rootNode,解析器,XPathResult.ANY_类型,null);
var result2Next=result2.iterateNext();
警报(result2Next?result2Next.innerHTML:“未找到”);//失败!
我做了一把小提琴
提前感谢您的帮助。最后我找到了一个适合我的用例的解决方法 我使用“local-name()”查找没有任何命名空间条件的元素 多亏了
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 !