これは少し奇妙です。このスクリプトを別のコンピューターで実行したところ、別の結果が得られました。あるコンピューターではこのコードは機能しましたが、別のコンピューターでは機能しませんでした。ここに私の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 Developer Tools を使用して、何が起こっているのかを確認しました。ステータス コード 200 の XHR リクエストがありましたが、それでもこのエラーが発生しました。
a = xmlDoc.getElementsByTagName("SubClassOf");
Uncaught TypeError: Cannot call method 'getElementsByTagName' of null
XMLを返すprintSubClassOf()
前に終了したと思います。loadXmlDoc()
どう思いますか?そして、この問題を解決するにはどうすればよいですか?参考までに、これを localhost で実行しました。