空元素xml加载停止

时间:2014-06-03 17:15:55

标签: if-statement getelementsbytagname isnullorempty

我正在尝试在een html页面中显示een xml文件但是当标记名具有empy null值时,它会在该点停止并且不会显示文件的其余部分

<script>
 if (window.XMLHttpRequest)
   {// code for IE7+, Firefox, Chrome, Opera, Safari
   xmlhttp=new XMLHttpRequest();
   }
 else
   {// code for IE6, IE5
   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
   }
 xmlhttp.open("GET","./test.XML",false);
 xmlhttp.send();
 xmlDoc=xmlhttp.responseXML;

 document.write("<table border='0'>");
 var x=xmlDoc.getElementsByTagName("file");
 for (i=0;i<x.length;i++)
   { 
  document.write("<table width=100% border=0 cellpadding=0 cellspacing=0 class=table><tr><td>"+
    "<table width=100% border=0 cellpadding=0 cellspacing=0 class=table>"+
    "<tr><td width=6%></td><td align=left>"+x[i].getElementsByTagName("nr")[0].childNodes[0].nodeValue+"<br><br></td><td></td><td align=left>text<br><br></td></tr>"+
    "<tr><td align=left>"+x[i].getElementsByTagName("nrorder")[0].childNodes[0].nodeValue+"</td>");

    if(x[i].getElementsByTagName("text")[0].childNodes[0].length = 0)
    {
        document.write("<td></td>");
    }
    else
    {
        document.write("<td align=left><b>"+x[i].getElementsByTagName("text")[0].childNodes[0].nodeValue+"</b></td>");

    }

    }
 </script>
 </center>
 </div>
 </body>
 </html>

这里是测试xml文件

 <file>
 <nr>1</nr>
 <nrorder>101</nrorder>
 <text>1</text>
 </file>
 <file>
 <nr>2</nr>
 <nrorder>102</nrorder>
 <text></text>
 </file>
 <file>
 <nr>33333333333</nr>
 <nrorder>103</nrorder>
 <text>33333333</text>
 </file>

所以,当我到达2时,它不会继续到3.我怎么能继续下一个?没有停在第二个

如果我删除if语句我可以显示所有内容但需要此元素

修复是:

if (x[i].getElementsByTagName("text")[0].childNodes.length == 0) {
    document.write("<td align=left><b></b></td>")
} 
else {
    document.write("<td align=left><b>"+x[i].getElementsByTagName("text")[0].childNodes[0].nodeValue+"</b></td>");
}   

1 个答案:

答案 0 :(得分:0)

if (x[i].getElementsByTagName("text")[0].childNodes.length == 0) {
document.write("<td align=left><b></b></td>")
} 
else {
document.write("<td align=left><b>"+x[i].getElementsByTagName("text")[0].childNodes[0].nodeValue+"</b></td>");

}