Программирование > JavaScript & JScript
JavaScript: сканирование папок
Макс:
Leech
--- Цитировать ---Чёрт, как вставлять отступы? Чтоб хотя бы код можно было прочитать нормально?
--- Конец цитаты ---
[off] если код поместить в теги [ code ] твой код [ / code] то отступы сохранятся [/off]
Макс:
Вот упрощенный пример, того что у меня заработало:
--- Код: ---
// XML который обрабатываем
xmlstr = \'text\';
function viewDocument(){
xmldoc = new ActiveXObject("Msxml2.DOMDocument");
xmldoc.loadXML(xmlstr); // xmlstr может содержать URL xml-документа
parse(xmldoc.documentElement); // Начало разбора документа
}
function parse(root){
if(root==null) return;
var i=0;
var elem;
if(root.childNodes != null){ // Если вложенные элементы не были определены, то свойство children будет установленно в null
// Перебор дочерних элементов
for(i=0;i
Leech:
Ага... работает... с некоторыми изменениями, связанными с тем, что идет подгрузка XML из файла...
вместо
xmldoc.loadXML(xmlstr);
пишем
var xmlsrc = "struct.xml"; xmldoc.load(xmlsrc):
Тока как-то всё странно происходит далее... У меня при входе в функцию parse параметр root равен нулю, что вызывает выход из неё. Хотя если написать обработку ошибок загрузки XML вот в таком виде:
--- Код: ---
function viewDocument(){
if (xmldoc.load(xmlsrc)) {
alert(\'Load XML done\');
}else{
alert(\'Load XML error\');
}
parse(xmldoc.documentElement);
}
--- Конец кода ---
то, после того, как выскочит алерт "Load XML done", дальнейшая обработка происходит без проблем, т.е. параметр root не равен нулю... Интересно получается? Прям какой-то волшебный алерт :)
Макс, если интересно, могу кинуть по Асе урлу, где это всё выложено...
Макс:
--- Цитировать ---Макс, если интересно, могу кинуть по Асе урлу
--- Конец цитаты ---
нет, спасибою у меня есть занятия поинтереснее.
Поведение конечно странное. У тебя XML well-formed ?
И почитай доку по MSXML по объекту parseError
Еще возможно, это связано с тем что XML не успевает подгрузиться.
Проверяй свойство readyState. Пример из мануала:
--- Код: ---
var xmldoc;
function Load()
{
xmldoc = new ActiveXObject("Msxml2.DOMDocument");
xmldoc.onreadystatechange = CheckState;
xmldoc.load(URL.value);
}
function CheckState()
{
var state = xmldoc.readyState;
RESULTS.innerHTML += "readyState = " + state + "
"
if (state == 4)
{
var err = xmldoc.parseError;
if (err.errorCode != 0)
RESULTS.innerHTML += err.reason + "
"
else RESULTS.innerHTML +="success" + "
"
}
}
URL:
--- Конец кода ---
если readyState == 4 то документ полностью загрузился
Leech:
Разобрался... теперь сделал рекурсивную функцию обхода по дереву:
--- Код: ---
function ViewNode(root){
var i,j;
var ChildNodes = root.childNodes.length;
for(i=0; i
Навигация
Перейти к полной версии