我有一个看起来像这样的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”开始。
感谢您的帮助:)
答案 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);
}