简体   繁体   English

XML 循环在数组中收集太多元素

[英]XML loop collecting too many element in array

Hey guys I'm having trouble looping through some XML.嘿伙计们,我在循环某些 XML 时遇到问题。 Im trying to capture the elements and use them as js variables.我试图捕获元素并将它们用作 js 变量。 My XML is.我的 XML 是。

<box>
 <thing>
          <id>5</id>
          <numbers>
              <number>4</number>
              <number>6</number>
          </numbers>
 </thing>
 <thing>
          <id>2</id>
          <numbers>
              <number>8</number>
              <number>5</number>
              <number>9</number>            
          </numbers>
 </thing>
 <thing>
          <id>88</id>
          <numbers>
              <number>78</number>
          </numbers>
 </thing>
 </box>

My JS.我的 JS。

ajax(site, params)

var things =  xmlDoc.getElementsByTagName("thing");

for (i=0; i<things.length; i++){
    var id = things[i].getElementsByTagName("id")[0].firstChild.nodeValue;
    var numbers =  things[i].getElementsByTagName("numbers");
    var value;
    for (n=0; n<numbers.length; n++){
        var number = numbers[n].getElementsByTagName("number");
        value = value + number;
    }

    id = value;
 }

The problem I'm having is that when I grab the elements it seems to grab all the elements from the entire page.我遇到的问题是,当我抓取元素时,它似乎抓取了整个页面中的所有元素。

And adds them to value so I end up with并将它们添加到价值中,所以我最终得到

id #1 = 110;
id #2 = 100;
id #3 = 78;

Is there another way to achieve what I am trying to do here?还有另一种方法可以实现我在这里尝试做的事情吗?

How about something like this这样的事情怎么样

for (var i = 0; i < things.length; i++) {
    var thing = things[i];
    var id = thing.getElementsByTagName('id')[0].firstChild.nodeValue;
    var numbers = thing.getElementsByTagName('number');
    for (var j = 0, value = 0; j < numbers.length; j++) {
        value += numbers[j].firstChild.nodeValue;
    }
    console.log(id, value);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM