【发布时间】:2013-03-23 00:58:11
【问题描述】:
这有点奇怪。我在不同的计算机上运行了这个脚本,得到了不同的结果。 在一台计算机上,此代码有效,但在另一台计算机上无效。这是我的 js 代码:
xmlDoc = loadXmlDoc();
printSubClassOf();
function loadXmlDoc(){
var xmlDom = null;
var xhttp = new XMLHttpRequest();
xhttp.open("GET", "resto.owl", false);
xhttp.send(null);
xmlDom = xhttp.responseXML;
return xmlDom;
}
function printSubClassOf(){
a = xmlDoc.getElementsByTagName("SubClassOf");
for(i = 0; i < a.length; i++){
b = xmlDoc.getElementsByTagName("SubClassOf")[i].childNodes;
for(j = 0; j < b.length; j++){
c = xmlDoc.getElementsByTagName("SubClassOf")[i].childNodes[j];
document.write(i + " " + j + " " + c.nodeName + "<br>");
}
}
}
这是我试图解析的 XML。
<Ontology>
<SubClassOf>
<Class IRI="#Chef"/>
<Class IRI="#Employee"/>
</SubClassOf>
<SubClassOf>
<Class IRI="#Customer"/>
<Class IRI="#People"/>
</SubClassOf>
</Ontology>
我使用 Chrome 开发者工具来查看发生了什么。有一个带有 200 状态码的 XHR 请求,但仍然出现此错误。
a = xmlDoc.getElementsByTagName("SubClassOf");
Uncaught TypeError: Cannot call method 'getElementsByTagName' of null
我认为 printSubClassOf() 在 loadXmlDoc() 返回 XML 之前完成。你怎么看?以及如何解决这个问题?仅供参考:我在 localhost 上运行了这个。
【问题讨论】:
-
@bfavaretto 我刚刚编辑了我的问题,感谢您的澄清。
-
我尝试了您发布的代码,并且成功了。您是在尝试完全相同的代码还是不同的代码?
标签: javascript xml xml-parsing xmlhttprequest