我需要通过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>代码应该输出"here is L2 with id“。
我使用的是FF 9.0.1和Chrome 16.0.912.75m,开发工具没有显示任何错误或提示。
现在我真的不知道了,是Chrome中的bug还是Firefox中的“额外”功能。而且--最重要的是--我怎样才能让Chrome变得像Firefox一样。或者您是否有另一个想法,如何在本地创建的XML文档上使用XPath?!
提前感谢
发布于 2012-01-22 00:37:39
我发现您的示例代码中有一个小问题。
root元素永远不会添加到XML文档( xml变量)。
因此,XPath搜索无法工作,因为xml文档对象没有根元素,因此没有要搜索的内容。尝试添加:
xml.appendChild(root);在此之后:
var root = xml.createElement("root");这解决了我在Chrome中的问题。
https://stackoverflow.com/questions/8945305
复制相似问题