Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > XML

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 12.01.2004, 13:49
foleg вне форума Посмотреть профиль Отправить личное сообщение для foleg Посетить домашнюю страницу foleg Найти все сообщения от foleg
  № 1  
foleg
 
Аватар для foleg

Регистрация: Aug 2003
Адрес: Екатеринбург
Сообщений: 1
Cool Уважаемые ПроФи Flasher's помогите!

Ребята помогите, застрял на одном месте.
Купил книгу "Flash MX ActionScript" авт.Роберт Рейнхард, Джой Лот решил вплотную освоить Flash и книга то неплохая да вот только мозги уже пухнут от того что эту проблему неполучается никак решить, я весь раздел в книге перевернул, ни х...на не могу сделать (конечно я новичок в этом Flasher'ском деле, поэтому прошу помочь что бы двинуться дальше)
Суть проблемы: Как прочитать все дерево в XML c помощью цикла или функции. Как сделать это пошагово я знаю т.е. обращаешься сначала к одному ноду достаешь из него все вложенные ноды, потом перходишь к другому ноду.
Вот моя XML:
<tovar title="Товар">
<name type="Тип" marka="Марка">
<model chushka="Модель" price="195.30" col="0" />
</name>
<name type="Тип" marka="Марка">
<model chushka="Модель" price="186.60" col="0" />
<model chushka="Модель" price="180.30" col="10" />
</name>
<name type="Тип" marka="Марка">
<model chushka="Модель" price="181.20" col="0" />
<model chushka="Модель" price="44.70" col="0" /
<model chushka="Чушка" price="30.00" col="0" />
</name>
.....
</tovar>
Скрипт:
_root.createTextField("name",1,0,0,600,600);
myXML = new XML();
myXML.ignoreWhite = true;
myXML = new XML ('Данные XML');
tovar = myXML.firstChild;
model = tovar.firstChild;
title = tovar.attributes.title;
for (i=0; i<tovar.childNodes.length; i++)
{
name1 = tovar.childNodes[i].nodeName;
type = tovar.childNodes[i].attributes.type;
marka = tovar.childNodes[i].attributes.marka;
for (b=0; b<model.childNodes.length; b++)
{
sibling = model.childNodes[b].attributes.chushka;
sibling2 = model.childNodes[b].attributes.price;
sibling3 = model.childNodes[b].attributes.col;
}
name.text+=(title+name1+"\t"+type+"\t"+marka+"\t"+sibling+"\t"+sibling2+"\t"+sibling3+"\n");
}
тестирование:
Товарname Тип Марка Модель 195.30 0
Товарname Тип Марка Модель 195.30 0
Товарname Тип Марка Модель 195.30 0
Вот проблема моя видно наглядно.
Начинающий foleg
__________________
foleg

Старый 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;
}
}
}
//тут можно вставить какое-нить действие, которое сработает по завершении разбора
}

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

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

Создать новую тему   Часовой пояс GMT +4, время: 21:59.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:59.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.