Javascript, получающий цикл имен узлов XML, не останавливается - PullRequest
0 голосов
/ 06 марта 2019

У меня есть XML-файл, который выглядит следующим образом:

<ROWSET>
   <ROW>
      <option1> lala </option1>
      ...
      <option39> lolo </option39>
   </ROW>
   <ROW>
      <option1> baba </option1>
      ...
      <option39> bobo </option39>
   </ROW>
   ...
</ROWSET>

Все вместе файл содержит 840 строк.Теперь у меня есть некоторый код JavaScript, который получает мне имена узлов ("option1", "option2", ..., "option39") и печатает их через console.log.

Вот как выглядит коднапример:

var xmlDoc = xml.responseXML;
var reihen = xmlDoc.getElementsByTagName("ROW");

for (var i = 0; i < 1; i++) {
    for (var j = 0; j < (eigenschaften * 2); j++) {
        var reihe = reihen[i].childNodes[j];

        if (reihe.nodeType === 1)
            console.log(reihe.nodeName + j + " " + i);
        }
    }

eigenschaften = 39 (количество узлов на ROW).

К сожалению, это не останавливается после предоставления мне 39 имен узлов;это просто продолжается, пока мой браузер не падает.Как мне закончить цикл?По какой-то причине он не останавливается после i> 1, он просто продолжается с i = 0.

Так что после того, как он дал мне «option39», он мгновенно начинается снова с «option1».

Спасибо за вашу помощь :)

1 Ответ

0 голосов
/ 06 марта 2019

Похоже, что в коде есть что-то еще, что мы не видим, что вызывает проблему. Но мне кажется, что вы должны просто ссылаться на длины и использовать их в циклах вместо переменных с числами.

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...