此代码接收一个 xml 文件并将其解析并输出为表格。这是一段代码(面向Firefox):
function viewXML(inputForm) {
var URL=inputForm.URL.value; //input XML URL
// create document and load URL
var xmlDoc = document.implementation.createDocument("","doc",null);
xmlDoc.load(URL);
xmlDoc.onload = generateHTML(xmlDoc);
hWin = window.open("","sth", "height=800,width=600");
hWin.document.write(html_text);
hWin.document.close();
}
viewXML 是按钮的 onClick 函数。现在有一段代码generateHTML()
:
function generateHTML(xmlDoc) {
...
caption=xmlDoc.getElementsByTagName("title").item(0).firstChild.nodeValue; //<1>
html_text += "<caption align='left'><h1>" + caption + "</h1></caption>";
...
}
一段 XML 文件:
<catalog>
<title>Airbus_Aircraft_Families</title>
<aircraft>
<Airbus>A380</Airbus>
<Aircraft>A380</Aircraft>
<seats>555</seats>
<Range>15000km</Range>
<Wingspan>78.8m</Wingspan>
<Height>24.1m</Height>
</aircraft>
</catalog>
问题: 当我在 Firebug 中以调试模式逐步运行它时,此代码运行良好。但是如果没有设置断点,当程序到达 <1> 行时,会显示一条错误消息: xmlDoc.getElementsByTagName("title").item(0) is null,这显然不是真的。
有趣的是,当我尝试添加一行时
alert(xmlDoc.getElementsByTagName("title").length)
在 <1> 行之前,它会弹出一个显示 0 的窗口,但是当我单击“确定”后,正确的标题(来自 XML)将显示在新窗口中!就像在逐步模式中一样。
我尝试过的事情:
1、xmlDoc.getElementsByTagName("title").item(0)
改成xmlDoc.getElementsByTagName("title")[0]
没用,调试器告诉我“xmlDoc.getElementsByTagName("title")[0] is undefined”
2,删除了XML文件中标签内或标签之间的所有空格,没有帮助。