我正在开发一个Web UI,它使用生成以下XML文件的Web服务:
<datas>
<order>
<order_ref>...</order_ref>
<order_time>...</order_time>
<products>
<product>
<sku>...</sku>
<quantity>...</quantity>
<price>...</price>
<title>...</title>
</product>
<product>
<sku>...</sku>
<quantity>...</quantity>
<price>...</price>
<title>...</title>
</product>
</products>
</order>
<order>...</order>
<order>...</order>
<order>...</order>
<order>...</order>
</datas>
正如您所看到的,我有一个XML文件,其中包含多个订单,可以是可变数量的订单,以及每个订单中的数量也可变的产品。 (例如,订单1有3个产品,订单2有1个产品等)。
我想阅读按特定顺序排列的产品的属性。
我试过这个,但它从所有订单中返回产品。
//var orders = xmlDoc.getElementsByTagName("order");
var products = xmlDoc.getElementsByTagName("product");
for (prodIndex = 0; prodIndex < products.length; prodIndex++) {
document.getElementById("data"+n).innerHTML = xmlDoc.getElementsByTagName('sku')[prodIndex].childNodes[0].nodeValue;
n++;
}
如何获得订单[x]中的产品?
答案 0 :(得分:0)
你只需要深入了解元素&#34;通过树&#34;到订单元素。在每个订单中找到产品:
orders = xmlDoc.getElementsByTagName("order");
for (i = 0; i < orders.length ;i++) {
txt += orders[i].nodeName + ": <br>";
prod = orders[i].getElementsByTagName("products");
prods = prod[0].getElementsByTagName("product");
for (j = 0; j < prods.length; j++){
txt += prods[j].nodeName + "<br>";
}
txt += "<br>";
}
此外,您应该检查元素是否存在或代码是否有效。
缩短代码
整个例外:http://www.w3schools.com/code/tryit.asp?filename=FA3A1AU4NB57
orders = xmlDoc.getElementsByTagName("order");
for (i = 0; i < orders.length ;i++) {
prods = orders[i].getElementsByTagName("products")[0].getElementsByTagName("product");
for (j = 0; j < prods.length; j++){
//here is Your product in prods[j] for one order "orders[i]"
}
}