使用JavaScript正确创建XML表
我使用带有JavaScript的HTML文件来解析XML文档,并将其所有数据放入一个表中。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"
<?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显示错误信息,就像您描述的问题一样。