将多个XML节点显示为HTML

时间:2012-09-29 16:52:16

标签: javascript html xml ajax

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

这是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>

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

1 个答案:

答案 0 :(得分:0)

xx也是一个数组,因此你需要在x循环中使用另一个循环。

尝试捕捉需要进入这个循环。

我不是很擅长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;