Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有名称空间的XML文档中的Javascript XPath_Javascript_Xpath_Xml Namespaces - Fatal编程技术网

带有名称空间的XML文档中的Javascript 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

我在使用非常简单的XPath时遇到了一个问题,但我不明白为什么它不起作用

当我搜索一个带有名称空间的元素时,它就像一个符咒,但搜索的是“默认”名称空间(不知道确切的术语)

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 !