1

我正在尝试显示特定标签的所有节点,到目前为止,它确实过滤了我想要的数据,但只显示了一个节点。有人可以帮我吗?

这是 XML:

<?xml version="1.0" encoding="UTF-8"?>
<USA>
<NY>
  <Cell>NY Store 1</Cell>
   <Cell>NY Store 2</Cell>
  <Cell>NY Store 3</Cell>
</NY>
<CA>
  <Cell>CA Store 1</Cell>
   <Cell>CA Store 2</Cell>
  <Cell>CA Store 3</Cell> 
</CA>
</USA>

这是脚本:

<script>
function loadXMLDoc()
{
    var xmlhttp;
    var txt,x,i;
    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function()
    {
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    xmlDoc=xmlhttp.responseXML;
    txt="";
    x=xmlDoc.getElementsByTagName("CA");
    for (i=0;i<x.length;i++)
    {
    xx=x[i].getElementsByTagName("Cell");
    }
    try
    {
    txt=txt + xx[0].childNodes[0].nodeValue + "<br />";
    }
    catch (er)
    {
    }
    document.getElementById("result").innerHTML=txt;
    }
    }
    xmlhttp.open("GET","stores.xml",true);
    xmlhttp.send();
}
</script>

这是HTML:

<button type="button" onclick="loadXMLDoc()">California</button>
<div id="result">Please select your state</div>

正如我所说,它的文字很好,但它只显示了加利福尼亚州的一个元素。有任何想法吗?先谢谢了!

4

1 回答 1

0

xx 也是一个数组,因此您需要在 x 循环中再添加一个循环。

try catch 需要在这个循环中。

我不是很擅长 javascript,但如果你的语法是正确的。所以,我认为这可能有效(虽然我没有测试过):

for (i=0;i<x.length;i++)
{
    xx=x[i].getElementsByTagName("Cell");
    for(j=0;j<xx.length;j++) {
       try {
          txt=txt + xx[j].childNodes[0].nodeValue + "<br />";
       }
       catch(er) {

       }
    }
}

document.getElementById("result").innerHTML=txt;
于 2012-09-29T17:03:55.530 回答