PDA

Просмотр полной версии : как сделать рекурсивный обход Xml файла?


akb2005
15.08.2005, 11:38
Доброе время суток.

Как сделать рекурсивный обход XML файла?
т.е. параметрически передавать в функцию ветку XML, чтоб не писать 100 раз AAA.childNodes[i].childNodes[ii].childNodes[iii].childNodes[iiii].childNodes[iiiii].childNodes[iiiiii]...?

unlexx
15.08.2005, 11:48
циклом
for i {
for ii {
for iii {
}
AAA.childNodes[i].childNodes[ii].childNodes[iii].childNodes;
}
}

akb2005
15.08.2005, 11:53
это понятно, а если неизвестна структура, я напишу 5 вложенных циклов а их 7, как обрабатывать такие дела, с рекурсией непонятно?

unlexx
15.08.2005, 11:58
проверяй глубину и через функцию делай обходы

iNils
15.08.2005, 12:40
Только имя файла смени

_root.tree2xml = function (xmlNode) {
trace (xmlNode);

if (xmlNode.hasChildNodes () || xmlNode.childNodes.length != 0) {
var j = 0;
while (xmlNode.childNodes[j]) {
_root.tree2xml (xmlNode.childNodes[j++]);
}
}
};
xmlTree = new XML ();
xmlTree.ignoreWhite = true;
xmlTree.load ("_city.xml");
xmlTree.onLoad = function () {
_root.tree2xml (xmlTree);
};

akb2005
16.08.2005, 10:58
спасибо, я уже сделал, хотел именно так, но не получалось передать ветку Xml через параметр функции.
а так действительно работает, а то мне пришлось куски Xml засовывать во временный массив?