你好我有解析xml的问题.. 我有像这样的xml:
<tejemahan>
<kategori> komputer </kategori>
<hasil> aplikasi komputer </hasil>
</terjemahan>
编辑: 上面的xml我就是这样:
var url="http://localhost:8080/inlinetrans/api/translate/"+userSelection+"/"+hasilStemSel+"/"+hasilStem;
var client = new XMLHttpRequest();
client.open("GET", url, false);
client.setRequestHeader("Content-Type", "text/plain");
client.send(null);
if(client.status == 200)
alert("the request success"+client.responseText);
else
alert("the request isn't success"+client.status+""+client.statusText)
}
这是我解析上面的xml文件的代码:
this.loadXML = function (){
var url = http://localhost:8080/coba/api/artikan/"+sel+"/"+hasilStemSel+"/"+hasilStem
xmlDoc=document.implementation.createDocument("","",null);
xmlDoc.load("url");
xmlDoc.onload= this.readXML;
}
this.readXML = function() {
alert(xmlDoc.documentElement.tagName);
alert(xmlDoc.documentElement.childNodes[0].tagName);
alert(xmlDoc.documentElement.childNodes[1].tagName);
alert(xmlDoc.documentElement.childNodes[0].textContent);
alert(xmlDoc.documentElement.childNodes[1].textContent);
}
我可以执行此代码
xmlDoc=document.implementation.createDocument("","",null);
xmlDoc.load("url");
但为什么我不能执行此代码 xmlDoc.load = this.readXML ???
答案 0 :(得分:1)
尝试在load()调用之前放置onload handler赋值。如果首先调用load(),则在分配处理程序以处理它之前会发生onload事件。像这样:
xmlDoc=document.implementation.createDocument("","",null);
xmlDoc.onload= this.readXML;
xmlDoc.load("url");
答案 1 :(得分:1)
首先,我是David Dorward的第二个建议:改为使用XMLHttpRequest
,这将适用于所有主流浏览器。代码如下。
其次,您的readXML
函数存在缺陷,因为大多数浏览器都会在childNodes
集合中包含空白文本节点,因此xmlDoc.documentElement.childNodes[0]
实际上是文本节点且没有{{1属性。我建议您在迭代tagName
时使用getElementsByTagName()
或检查每个节点的nodeType
属性。
第三,您的XML无效:childNodes
和<tejemahan>
不匹配,尽管这可能是您提问中的拼写错误。
</terjemahan>