我需要访问我通过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?!
提前致谢
答案 0 :(得分:1)
我发现您的示例代码中存在一个小问题。
root
元素永远不会添加到XML文档(xml
变量)。
因此,XPath搜索无法工作,因为xml
文档对象没有根元素,因此没有要搜索的内容。尝试添加:
xml.appendChild(root);
之后:
var root = xml.createElement("root");
这解决了我在Chrome中遇到的问题。