Javascript 谷歌浏览器中的XPath错误?
我需要通过XPath访问我用JavaScript创建的XML文档。如果我从服务器(通过XMLHttpRequest)加载一个XML文件,它可以正常工作,但是如果我使用本地创建的XML文档中的XML文档引用,Chrome没有显示任何内容,而Firefox做了我期望的事情 下面是一些示例代码: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
<!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似乎非常正确;-)