XML - 将标记中的所有值都放入数组中

时间:2015-01-23 18:26:29

标签: javascript xml

我确信这是一个非常直截了当的问题!我有一个xml文档,并且使用AJAX,我想从具有相同名称的标记中获取值到数组中。 XML:

<data>
  <instance>
    <term>Dog</term>
    <clicks>11235</clicks>
  </instance>
  <instance>
    <term>Cat</term>
    <clicks>6309</clicks>
  </instance>
</data>

我的Javascript:

console.log(xml.getElementsByTagName("clicks")[0].childNodes[0].nodeValue); 

这似乎只返回第一个值。你如何归还他们?

3 个答案:

答案 0 :(得分:0)

您可以使用jQuery获取所有标记,然后使用.each()获取所有值:

$(xml).find('clicks').each(function(){
   console.log($(this).html());
});

或者如果你想获得一个数组,你可以使用.map()函数:

var list = $(xml).find('clicks').map(function(){
   return $(this).html();
}).get();

使用d3.js你可以这样做:

在DOM <div></div>

中定义div
var list = d3.select('div')
          .html(xml)   // set the xml content
          .selectAll('clicks')
          .each(function(){
              console.log(this.innerHTML);
          });
console.log(list); //you can do what you want with all clicks elements 

答案 1 :(得分:0)

试试我在java中写的,我想你必须改变数组部分。希望这有帮助。

NodeList clicks = xml.getElementsByTagName("clicks")
int[] clickArray = new int[clicks.getLength()];
for(int i=0; i<clicks.getLength();i++){
  clickArray[i] = clicks[i].childNodes[0].nodeValue;
}

答案 2 :(得分:0)

function test(){
 var clicks = xml.getElementsByTagName("clicks");
 var result = new Array();
 foreach(var c in clicks){
    console.log(c);
    result.push(c.childNodes[0].nodeValue);
 }
 return result;
}

这应该打印所有&#34;点击&#34;标签。在你的结果数组中现在都是值,但请注意,如果标签&#34;结构&#34;永远是你上面发布的那个