![]() |
Parse XML с неограниченной вложенностью
Всем, доброго дня!
Есть XML типа Код:
<parent>Родскажите как это лучше распарсить в Flash? Что-то я совсем запутался в массивах, блин... |
ну если неограниченное дерево то рекурсией обходи
|
я думал, что от этого тут не убежать, да и при обработке конечного массива тоже нужно будет его раскручивать рекурсивно..
можно с этого момента по-подробнее или пример? ) |
вот тут подобное обсуждалось: http://flasher.ru/forum/showthread.php?t=88954
|
спасибо.. только ему не предложили рабочего варианта, сказали только что вторая рекурсия лишня.. и в конце код также не рабочий..
вопрос еще актуален) |
ХМЛ парсится уже прямо при создании. Зачем его еще куда-то во что-то парсить?
|
Код:
XML.prototype.makeObj = function(xObj, obj) { |
2 wvxvw: XML внешний..
2 telit: спасибо конечно... ты хочешь, чтобы у меня моск взорвался? или пару комментов уже рука не поднялась писать? хоть что передается в функцию ( xObj, obj)? |
Во флеше все ХМЛи одинаковые %) они не бывают внешними или внутренними =)
Это значит, что если вы дождались ХML.onLoad - вы его уже 1 раз отпарсили. Лучше, чем сам Флеш вы это вряд ли сделаете, ну уж не быстрее, это точно =) |
2 wvxvw: понял идею)) мне нужно обойти весь XML и перегнать инфорамцию во что-то с чем дальше можно удобны работать (массив и .т.д.)
2 telit: еще раз спасибо |
http://flasher.ru/forum/showthread.php?t=103255
Ну вот тогда еще 1 линк до кучи. |
2 Telit: стреманулся насчет вашего кода по тому, что он слишком сложный для подобной задачи.. посидел пару часов и сделал следующий рабочий вариант:
ИСХОДНЫЙ XML: Код:
<MAIN>Код:
function readXMLMenu() {В результате получаем линейный массив: Код:
myObject.name = Title 1Хотелось бы услышать комментарии гуру по поводу этого решения (если они есть)... |
Честно... а зачем тогда грузить ХМЛ? Как по мне - количество избыточного кода >50%... Проще уже лоадварзом передать такую нехитрую инфу. Кроме того... если обязательно грузить именно ХМЛ, то я бы попробовал переназначить onData, а не onLoad - все быстрее было бы =)
|
Я, наверное, чего то не знаю.. лоадВарз хавает строку параметров да? Зачем дерево с неограниченной вложенностью загонять в строку параметров, когда есть XML? в придачу могу еще появиться аргументы у нодов...
чем onData лучше onLoad? |
Код:
x = new XML () |
хм... тебе ведь в итоге нужно получить одномерный массив, ХМЛ структура гораздо более сложная чем массив - вопрос, зачем ее тогда использовать на 10%, если то же самое можно реализовать гораздо проще?
онДата - событие возникающее сразу после того, как строка содержащая в себе неотпарсеный ХМЛ полностью загрузится в флешку. онЛоад - соотвественно, по завершению парсинга. Т.е. если ты не используешь большую часть возможностей ХМЛя - зачем тогда его вообще парсить, да еще и 2 раза? Просто, возьми строку, да и выйми из нее нужную информацию - построй объект, как тебе нравится. Ща попробую накатать что-нибудь для примера |
Еще один линк до кучи http://www.flasher.ru/forum/showthread.php?t=103150 =)
|
Код:
var _xml:XML = new XML(); |
начинать надо с оптимизации xml. те же данные:
Код:
<MAIN> |
Double, на мой взгляд не надо ничего оптимизировать в данном случае. Так как задача, я так понял, создать объект на основе xml, а объект лучше описать тем сопобом, который у Ведьмака.
На счет массива: смысл перегона xml в массив отсутствует. |
так xml - и есть объект.
|
Я немного не отом.. посмоти мой линк несколькими постами выше.
|
всё равно я не понимаю. а чем удобнее этот объект? что принципиально поменялось? обращаться к конкретному значению, как portfolio.websites.трам-пам-пам? а если завтра в xml появятся работы webradio? fla переписывать? смысл-то какой? нет, я правда не понимаю, чем xml плох...
|
Зачем нужно xml в объект перегонять и наоборот:
1. -- проще обратиться к какому то свойству -- проще его изменить Т.е., если тебе просто надо построить менюшку, на основе xml, преобразовывать xml в объект не надо, но если нужно обращаться к разным свойствам в разное время, и если их куча, то удобнее обращаться по именам. 2. можно сохранять сложные типы данных (в виде xml) и считывать их потом, тот же объект (если юзаешь mdm zinc, то без xml или sharedobject, тебе не обойтись, если захочешь объект сохранить, к примеру, теже настройки программы) |
Цитата:
|
Вспомнилась тема:
http://www.flasher.ru/forum/showthre...E5%E3%EE%ED%E8 |
блин, ну xml - это удобный способ описания древовидной структуры. если структура данных есть дерево, то кроме xml уже ничего не нужно. если сруктура данных не есть дерево, тогда и про xml нет смысла вспоминать.
|
спасибо всем )
|
Есть еще вариантик отображения дерева XML
Код:
var menuXML:XML; |
| Часовой пояс GMT +4, время: 11:17. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.