0

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

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

这是我用来写出这一行的行

 document.write(x[i].getElementsByTagName("name")[0].childNodes[0].nodeValue);

正如我所说,当我将 ("name")[0] 更改为 ("name")[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>

谢谢。

4

1 回答 1

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>");
于 2013-01-17T17:07:19.983 回答