Google Chrome中的XPath Bug?

时间:2012-01-20 17:19:43

标签: javascript xml google-chrome xpath

我需要访问我通过XPath用JavaScript创建的XML文档。如果我从服务器加载XML文件(通过XMLHttpRequest)它可以正常工作,但如果我使用本地创建的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>

代码应输出“这里是带有id的L2”。

我使用FF 9.0.1和Chrome 16.0.912.75 m开发工具不会显示任何错误或提示。

现在我不知道,这是Chrome中的错误还是Firefox中的“额外”功能。而且 - 最重要的是 - 如何让Chrome浏览器像Firefox一样。或者你还有另一个想法如何在本地创建的XML文档上使用XPath?!

提前致谢

1 个答案:

答案 0 :(得分:1)

我发现您的示例代码中存在一个小问题。

root元素永远不会添加到XML文档(xml变量)。

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

xml.appendChild(root);

之后:

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

这解决了我在Chrome中遇到的问题。