Не пойму как парсить XML файл с бесконечным числом подуровней например как вот у этом форуме :
http://forum.rusf.ru/nul-t/
если это делать во вложенных циклах то как знать сколько вообще уровней вглубь существует у каждой темы и подтемы?
если не совсем понятно, что именно нужно нувот например я могу определить сколько всего основных узлов:
totalMenus = obj.selectNodes("data/MenuSection").length
и открыть цикл и вывести их всех
но потом, чтобы определить сколько подузлов у узла мне надо сделать тоже самое внутри цикла после вывода основного узла:
totalSUBMenus = obj.selectNodes("data/MenuSection/SubMenuSection").length
и открыть новый цикл если не ноль, и вывсести подузлы.
Это все хорошо если подуровней лимитированное количество — 5, 10 и.т.д.
А если их БЕСКОНЕЧНОЕ количество?
как идти вглубь "пока не упрешься"?
чувствую что это очень просто но не могу додуматься
Здравствуйте, Moondev, Вы писали:
M>Не пойму как парсить XML файл с бесконечным числом подуровней например как вот у этом форуме :
M>http://forum.rusf.ru/nul-t/
M>если это делать во вложенных циклах то как знать сколько вообще уровней вглубь существует у каждой темы и подтемы?
M>если не совсем понятно, что именно нужно нувот например я могу определить сколько всего основных узлов:
M>totalMenus = obj.selectNodes("data/MenuSection").length
M>и открыть цикл и вывести их всех
M>но потом, чтобы определить сколько подузлов у узла мне надо сделать тоже самое внутри цикла после вывода основного узла:
M>totalSUBMenus = obj.selectNodes("data/MenuSection/SubMenuSection").length
M>и открыть новый цикл если не ноль, и вывсести подузлы.
M>Это все хорошо если подуровней лимитированное количество — 5, 10 и.т.д.
M>А если их БЕСКОНЕЧНОЕ количество?
M>как идти вглубь "пока не упрешься"?
M>чувствую что это очень просто но не могу додуматься
Use recursive call
Здравствуйте, Moondev, Вы писали:
M>Не пойму как парсить XML файл с бесконечным числом подуровней например как вот у этом форуме :
M>http://forum.rusf.ru/nul-t/
M>если это делать во вложенных циклах то как знать сколько вообще уровней вглубь существует у каждой темы и подтемы?
M>если не совсем понятно, что именно нужно нувот например я могу определить сколько всего основных узлов:
M>totalMenus = obj.selectNodes("data/MenuSection").length
M>и открыть цикл и вывести их всех
M>но потом, чтобы определить сколько подузлов у узла мне надо сделать тоже самое внутри цикла после вывода основного узла:
M>totalSUBMenus = obj.selectNodes("data/MenuSection/SubMenuSection").length
M>и открыть новый цикл если не ноль, и вывсести подузлы.
M>Это все хорошо если подуровней лимитированное количество — 5, 10 и.т.д.
M>А если их БЕСКОНЕЧНОЕ количество?
M>как идти вглубь "пока не упрешься"?
M>чувствую что это очень просто но не могу додуматься
В качестве примера можно так (файл traverse.js):
if (WScript.Arguments.length != 1)
{
WScript.echo("usage: traverse.js filename");
WScript.Quit(1);
}
var fname = WScript.Arguments.Item(0);
var dom = new ActiveXObject("Msxml2.DOMDocument");
function traverseTree(node)
{
// process node here
WScript.echo("element: name=" + node.nodeName + ", type=" + node.nodeType, ", text=" + node.text);
if (node.hasChildNodes)
{
for (var i=0; i<node.childNodes.length; i++)
{
var child = node.childNodes.item(i);
traverseTree(child);
}
}
}
if (dom.load(fname))
{
traverseTree(dom.documentElement);
}
else
{
WScript.echo("### error loading " + fname + ": " + dom.parseError.reason);
}