Javascript获取XML节点名称循环不会停止

时间:2019-03-06 15:27:24

标签: javascript xml loops parsing

我有一个看起来像这样的XML文件:

Add-AppxPackage

文件总共包含840个行。我现在有一些JavaScript代码,可以获取节点名称(“ option1”,“ option2”,...,“ option39”),并通过console.log打印它们。

代码如下:

<ROWSET>
   <ROW>
      <option1> lala </option1>
      ...
      <option39> lolo </option39>
   </ROW>
   <ROW>
      <option1> baba </option1>
      ...
      <option39> bobo </option39>
   </ROW>
   ...
</ROWSET>
eigenschaften = 39(每个ROW的节点数量)。

不幸的是,在给我39个节点名称后,它并没有停止;它一直持续到我的浏览器崩溃为止。如何结束循环?由于某些原因,它不会在i> 1之后停止,而只会以i = 0继续。

因此,在给我“ option39”后,它立即从“ option1”开始。

感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

听起来像代码中还有其他内容,这是导致问题的原因。但是在我看来,您应该只引用长度并将其用于循环中,而不要使用带数字的变量。

var xmlStr = `<?xml version="1.0"?>
<ROWSET>
   <ROW>
      <option1> lala1 </option1>
      <option2> lala2 </option2>
      <option3> lala3 </option3>
      <option4> lala4 </option4>
      <option5> lala5 </option5>
      <option39> lolo </option39>
   </ROW>
   <ROW>
      <option1> baba1 </option1>
      <option2> baba2 </option2>
      <option3> baba3 </option3>
      <option4> baba4 </option4>
      <option5> baba5 </option5>
      <option39> bobo </option39>
   </ROW>
</ROWSET>`


var xmlDoc = new window.DOMParser().parseFromString(xmlStr, "text/xml")


//var xmlDoc = xml.responseXML;
var reihen = xmlDoc.getElementsByTagName("ROW");
for (var i = 0; i < reihen.length; i++) {
  var rowChildren = reihen[i].childNodes
  for (var j = 0; j < rowChildren.length; j++) {
    var reihe = rowChildren[j];
    if (reihe.nodeType === 1)
      console.log(reihe.nodeName + ' ' + j + " " + i);
  }
}

仅读取第一行

var xmlStr = `<?xml version="1.0"?>
<ROWSET>
   <ROW>
      <option1> lala1 </option1>
      <option2> lala2 </option2>
      <option3> lala3 </option3>
      <option4> lala4 </option4>
      <option5> lala5 </option5>
      <option39> lolo </option39>
   </ROW>
   <ROW>
      <option1> baba1 </option1>
      <option2> baba2 </option2>
      <option3> baba3 </option3>
      <option4> baba4 </option4>
      <option5> baba5 </option5>
      <option39> bobo </option39>
   </ROW>
</ROWSET>`


var xmlDoc = new window.DOMParser().parseFromString(xmlStr, "text/xml")


//var xmlDoc = xml.responseXML;
var reihen = xmlDoc.getElementsByTagName("ROW");
var rowChildren = reihen[0].childNodes
for (var j = 0; j < rowChildren.length; j++) {
  var reihe = rowChildren[j];
  if (reihe.nodeType === 1)
    console.log(reihe.nodeName + ' ' + j);
}