我是html和javascript的新手。我一直在尝试通过javascript代码解析和访问xml文件的数据。目前它显示为null。我在下面发布我的代码。请看看并帮忙。
Html code:
<!DOCTYPE html>
<html>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<body>
<p id="demo"></p>
<script>
var xhttp;
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myFunction(this);
}
};
xhttp.open("GET", "http://10.21.64.222/LoadBreakSwitch/LBS_Commands.xml", true);
xhttp.send();
function myFunction(xml) {
var x, i, txt, xmlDoc;
xmlDoc = xml.responseXML;
txt = "";
x = xmlDoc.getElementsByTagName("Ping");
for (i = 0; i < x.length; i++) {
txt += x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("demo").innerHTML = txt;
}
</script>
</body>
</html>
The xml file:
<?xml version="1.0" encoding="utf-8"?>
<LBSCommands>
<Ping Commkey="A3070000AA00A4" Value="A309008001043101A4"/>
<Frequency Commkey="A3070300AD00A4" CommValue="A309038001013101A4"/>
<SwitchStatus Commkey="A3071D01C800A4" CommValue="A3091D8101014C01A4"/>
</LBSCommands>
答案 0 :(得分:0)
我不确定你到底是什么意思&#34;它显示为空&#34;,但是将代码更改为使用onload
回调可能会有所帮助:
var xhttp;
xhttp = new XMLHttpRequest();
xhttp.onload = function() {
myFunction(this);
};
另外,这一行:txt += x[i].childNodes[0].nodeValue + "<br>";
会在XML文档中childNodes[0]
为undefined
时引发异常。
修改强>
要使x[i].childNodes[0]
为非null,必须将所需属性移动为子元素的文本值。例如,如果您替换:
<Ping Commkey="A3070000AA00A4" Value="A309008001043101A4"/>
使用:
<Ping>
<Commkey key="A3070000AA00A4">
A309008001043101A4
<Commkey/>
<Ping/>
(并对其他元素做同样的事情)然后你会有类似的事情:
<p id="demo">
A309008001043101A4<br>
A309038001013101A4<br>
A3091D8101014C01A4<br>
</p>
作为您的HTML。
如果这不是您想要的确切HTML结果,请展示示例HTML,以便我能够提供帮助。