Показать сообщение отдельно
Старый 11.02.2004, 12:35
schleicher вне форума Посмотреть профиль Отправить личное сообщение для schleicher Посетить домашнюю страницу schleicher Найти все сообщения от schleicher
  № 2  
schleicher
 
Аватар для schleicher

Регистрация: Oct 2003
Адрес: Ёбург
Сообщений: 145
Сам когда-то задался этим вопросом. Здесь в исходниках лежит несколько примеров по XML, в одном из них - прекрасный вариант обхода всего дерева. суть в том, что создается рекурсивная функция, которая вызывает сама себя, если встречается потомок или сиблинг. а в качестве параметра принимает собсно потомка (и всю его ветвь), или сиблинга
вот пример:

function findTextElements() {
xmel=this;
while (xmel != null) {
// это блок разбора
if (xmel.nodeName == "header") {
header += xmel.childNodes[0].nodeValue;
}
if (xmel.nodeName == "text") {
txt += xmel.childNodes[0].nodeValue;
}
if (xmel.firstChild != null) {
xmel = xmel.firstChild;
} else {
if (xmel.nextSibling != null) {
xmel = xmel.nextSibling;
} else {
xmel = xmel.parentNode;
xmel = xmel.nextSibling;
}
}
}
//тут можно вставить какое-нить действие, которое сработает по завершении разбора
}

Эту функцию запускаешь, а в качестве параметра - кидаешь свои данные.

Если что - пиши. есть и другие варианты разбора хмл.
__________________
Ботва всё это