expandable getElementsByTagName数组

时间:2013-01-17 17:02:14

标签: javascript xml

打赌这很简单,但我已经花了几个小时才能让它发挥作用。

我正在阅读一个带有javascript的XML文件,但是我无法读取它的内容,只有当我在数组中更改索引(手动)时才会读取第二行。

这是我用

写出这一行的行
 document.write(x[i].getElementsByTagName("name")[0].childNodes[0].nodeValue);

正如我所说,当我将(“名称”)[0]更改为(“名称”)[1]时,它会读取第二行。 有没有办法可以创建一个循环?使用.length?

这是一些代码。

document.write("<table border='1'>");
var x =xmlDoc.getElementsByTagName("products");
for (i=0;i<x.length;i++)
  { 
  document.write("<tr><td>");
  document.write(x[i].getElementsByTagName("title")[0].childNodes[0].nodeValue);
  document.write("</td><td>");
  document.write(x[i].getElementsByTagName("name")[0].childNodes[0].nodeValue);
  document.write("</td><td>");
  document.write("</td></tr>");
  }
document.write("</table>");

和XML文件

<productlist>
<products>
  <title>Kök</title>
  <product><id>23</id><name>Bestick</name><price>45</price></product>
  <product><id>47</id><name>Tallrikar</name><price>99</price></product>
  <product><id>54</id><name>Glas</name><price>64</price></product>
  <product><id>68</id><name>Koppar</name><price>125</price></product>
</products>
<products>
  <title>Sängkläder</title>
  <product><id>12</id><name>Lakan</name><price>89</price></product>
  <product><id>43</id><name>Kudde</name><price>148</price></product>
  <product><id>48</id><name>Täcke</name><price>345</price></product>
</products>
</productlist>

感谢。

1 个答案:

答案 0 :(得分:1)

你已经有一个循环,显然你需要另一个循环:

document.write("<table border='1'>");
var x = xmlDoc.getElementsByTagName("products");
for (var i=0;i<x.length;i++)
  { 
  document.write("<tr><td>");
  document.write(x[i].getElementsByTagName("title")[0].childNodes[0].nodeValue);
  document.write("</td><td>");
  // Get all names on current products node, and loop
  var names = x[i].getElementsByTagName("name");
  for(var j=0; j<names.length; j++) {
    document.write(names[j].childNodes[0].nodeValue);
  }
  document.write("</td><td>");
  document.write("</td></tr>");
  }
document.write("</table>");