Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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
Javascript 谷歌浏览器中的XPath错误?_Javascript_Xml_Google Chrome_Xpath - Fatal编程技术网

Javascript 谷歌浏览器中的XPath错误?

Javascript 谷歌浏览器中的XPath错误?,javascript,xml,google-chrome,xpath,Javascript,Xml,Google Chrome,Xpath,我需要通过XPath访问我用JavaScript创建的XML文档。如果我从服务器(通过XMLHttpRequest)加载一个XML文件,它可以正常工作,但是如果我使用本地创建的XML文档中的XML文档引用,Chrome没有显示任何内容,而Firefox做了我期望的事情 下面是一些示例代码: <!DOCTYPE html> <html> <head> <title>Title of the document</title> </he

我需要通过XPath访问我用JavaScript创建的XML文档。如果我从服务器(通过XMLHttpRequest)加载一个XML文件,它可以正常工作,但是如果我使用本地创建的XML文档中的XML文档引用,Chrome没有显示任何内容,而Firefox做了我期望的事情

下面是一些示例代码:

<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>
<body>
<script type="text/javascript">
        var xml = document.implementation.createDocument("", "", null);

        var root = xml.createElement("root");

        var level1 = xml.createElement("L1");
        var level2 = xml.createElement("L2");
        L2txt = xml.createTextNode("here is L2");

        level2.appendChild(L2txt);
        level1.appendChild(level2);

        var level2 = xml.createElement("L2");
        level2.setAttribute("id", "myId");
        L2txt = xml.createTextNode("here is L2 with id");

        level2.appendChild(L2txt);
        level1.appendChild(level2);
        root.appendChild(level1);

        path="//L2[@id='myId']";

        var nodes=xml.evaluate(path, root, null, XPathResult.ANY_TYPE, null);
        var result=nodes.iterateNext();

        while (result) {
          document.write(result.textContent);
          document.write("<br />");
          result=nodes.iterateNext();
        }
</script>
</body>
</html>

文件标题
var xml=document.implementation.createDocument(“,”,null);
var root=xml.createElement(“根”);
var level1=xml.createElement(“L1”);
var level2=xml.createElement(“L2”);
L2Text=xml.createTextNode(“这里是L2”);
第二级:附加子级(l2text);
一级。附属物(二级);
var level2=xml.createElement(“L2”);
level2.setAttribute(“id”、“myId”);
L2Text=xml.createTextNode(“这里是具有id的L2”);
第二级:附加子级(l2text);
一级。附属物(二级);
根。附属物(1级);
path=“//L2[@id='myId']”;
var nodes=xml.evaluate(路径、根、null、XPathResult.ANY_类型、null);
var result=nodes.iterateNext();
while(结果){
文件。写入(结果。文本内容);
文件。写(“
”); 结果=nodes.iterateNext(); }
代码应该输出“这里是具有id的L2”

我使用FF9.0.1和Chrome16.0.912.75M,开发工具不会显示任何错误或提示

现在我真的不知道,这是Chrome中的bug还是Firefox中的“额外”功能。最重要的是,我怎样才能让Chrome像Firefox一样运行呢。或者,您是否有其他想法如何在本地创建的XML文档上使用XPath


提前感谢

我发现示例代码中有一个小问题

从不将
root
元素添加到XML文档中(变量
XML

因此,XPath搜索无法工作,因为
xml
文档对象没有根元素,因此没有要搜索的内容。尝试添加:

xml.appendChild(root);
在此之后:

var root = xml.createElement("root");

这解决了我在Chrome中的问题

哇,非常感谢,我不知道为什么我错过了这个-。。但是Firefox也接受了旧版本。。。Chrome似乎非常正确;-)