当使用1个childnode循环通过JSON解析的XML时,Javascript forEach无法正常工作?

时间:2016-10-01 04:05:45

标签: javascript json xml

我有一个XML文件,结构如下:

<output>
  <count>
  </count>
  <rows>
    <row>
      <element1></element1>
      <element2></element2>
      <element3></element3>
      <element4></element4>
    </row>
    <row>
      <element1></element1>
      <element2></element2>
      <element3></element3>
      <element4></element4>
    </row>
  </rows>
</output>

我通过AJAX从PHP请求文件并将其(响应)加载到变量中:

var xml=JSON.parse(response);

接下来,我想循环遍历它以获取数据。我注意到当行节点的数量是> 1,我可以这样做:

var list=[];
xml.output.list.rows.row.forEach(function(item)
{
   list.push(item.element1);
});

但是,当只有1个行节点时,此forEach不起作用。有人可以向我解释为什么和/或提供替代解决方案/方法来迭代这样的文件吗?

2 个答案:

答案 0 :(得分:0)

现在用

检查子节点的数量
var convertedNumber = NSNumber(value: numberToConvert)

允许我访问每个子节点的数据,而不管nodex的数量。

答案 1 :(得分:-1)

我建议您将其解析为doc,而不是将XML解析为JSON。以下是示例代码

var testXML = "<output><count></count><rows><row><element1>asd</element1></row><row><element1>zz</element1><element2>xx</element2></row></rows></output>";

var parser = new DOMParser();
var doc = parser.parseFromString(testXML, "text/xml");
var rows = doc.getElementsByTagName('row');

for(var i = 0; i < rows.length; i++) {

    console.log(rows[0]);
};

在所选行内打印出2行。如果您需要额外的解释,请告诉我。