使用JavaScript正确创建XML表

使用JavaScript正确创建XML表,javascript,html,xml,for-loop,dom,Javascript,Html,Xml,For Loop,Dom,我使用带有JavaScript的HTML文件来解析XML文档,并将其所有数据放入一个表中。XML文件如下所示: <?xml version="1.0"?> <orders> <order> <customerid>2384</customerid> <status>pending</status> <item instock="Y"

我使用带有JavaScript的HTML文件来解析XML文档,并将其所有数据放入一个表中。XML文件如下所示:

<?xml version="1.0"?> 
<orders> 
<order> 
    <customerid>2384</customerid> 
    <status>pending</status> 
    <item instock="Y" itemid="SD93"> 
        <name>Flying By Roller Skates</name> 
        <price>25.00</price> 
        <qty>25</qty> 
    </item> 
    <item instock="N" itemid="B12"> 
        <name>Bounce-o Ball</name> 
        <price>.35</price> 
        <qty>150</qty> 
    </item> 
</order> 
<order> 
    <customerid>5268</customerid> 
    <status>complete</status> 
    <item instock="Y" itemid="Q52"> 
        <name>Crash N Burn Skis</name> 
        <price>20</price> 
        <qty>10</qty> 
    </item> 
</order> 
<order> 
    <customerid>3384</customerid> 
    <status>pending</status> 
    <item instock="Y" itemid="PS93"> 
        <name>All Star Shoe</name> 
        <price>55.00</price> 
        <qty>12</qty> 
    </item> 
    <item instock="Y" itemid="M12"> 
        <name>All Star Hat</name> 
        <price>44.35</price> 
        <qty>15</qty> 
    </item> 
</order> 
<order> 
    <customerid>9008</customerid> 
    <status>pending</status> 
    <item instock="N" itemid="F32"> 
        <name>Fancy Shirt</name> 
        <price>120</price> 
        <qty>100</qty> 
    </item> 
</order> 
</orders> 

2384
悬而未决的
溜冰鞋飞行
25
25
弹跳球
.35 
150
5268
完成
滑雪板的碰撞
20
10
3384
悬而未决的
全明星鞋
55
12
全明星帽子
44.35
15
9008
悬而未决的
花式衬衫
120
100
这是我的HTML文件中的JavaScript代码:

        var output = "";
        var CustomerID = xmlDoc.getElementsByTagName("customerid");
        var Status = xmlDoc.getElementsByTagName("status");
        var Item = xmlDoc.getElementsByTagName("item");
        var Order = xmlDoc.getElementsByTagName("order");
        
        output += "<table border='1'>";
        output += "<tr>" + 
                    "<th>Customer ID</th>" +
                    "<th>Status</th>" +
                    "<th>Item Name</th>" +
                    "<th>Price</th>" +
                    "<th>Quantity</th>" +
                "</tr>";

        for(i=0; i<CustomerID.length; i++) {

          if(Status[i].innerHTML == "pending") {

              output += "<tr>";
              output += "<td rowspan='2'>" + CustomerID[i].innerHTML + "</td>";
              output += "<td rowspan='2'>" + Status[i].innerHTML + "</td>";

              for(i2=0; i2<Order[i].children.length; i2++) {

                if (Order[i].children[i2].nodeName == "item") {

                  for(i3=0; i3<Item[i2].children.length; i3++) {
                      output += "<td>" + Item[i2].children[i3].innerHTML + "</td>";
                  } 
                  output += "</tr>";
                  output += "<tr>";
                  
                  } else {
                    output += "";
                  }
              }
          } else {
            output += "";
          }
        }             
              output += "</table>";
              document.getElementById("table").innerHTML = output;
var输出=”;
var CustomerID=xmlDoc.getElementsByTagName(“CustomerID”);
var Status=xmlDoc.getElementsByTagName(“状态”);
var Item=xmlDoc.getElementsByTagName(“Item”);
var Order=xmlDoc.getElementsByTagName(“订单”);
输出+=“”;
输出+=“”+
“客户ID”+
“地位”+
“项目名称”+
“价格”+
“数量”+
"";

对于(i=0;i而不是在开始时抓取所有元素,我建议只选择
顺序
s,并通过在循环中选择它们来循环它们的子元素:

var orders=xmlDoc.getElementsByTagName('order');
对于(i=0;iThanks,这太好了,它工作得非常好。出于好奇,是否还有一个解决方案使用我以前的方法?这可能是索引的问题,但我无论如何不会使用这种方法,因为您删除了整个父/子结构。您必须100%确保您在所有地方都有正确的索引,否则它将l显示错误信息,就像您描述的问题一样。