![]() |
|
||||||||||
|
|||||
|
Доброго время суток.
Появилась задача, распарсить xml файл, что то типа JSONDecoder. Что пытаюсь сделать я: static private function getChild (ar:XML):Object { var childXml:Object = { }; trace(ar.name()); if (ar.elements().length() > 0) { for (var n:String in ar.elements()) { childXml[ar.name()] = getChild(XML(ar.elements()[n])); } } return childXml; } пример xml - ки <windowstyle> <win id="0"> <parameters> <title> <lang name="ru">Окно</lang> <lang name="en">Window</lang> </title> <width>400</width> <height>500</height> <scale>true</scale> </parameters> <next> // ... </next> </win> </windowstyle> Добавлено через 4 минуты а ... что хотел то получить:
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь! |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Может, я что-то не понимаю, но зачем? Зачем делать Обжект, если уже есть кошерный XML? Чем он плох? И как, например, Вы представляете себе в обжекте наличие одновременно двух свойств lang? Объяснитесь подробней.
__________________
Reality.getBounds(this); |
|
|||||
// одну задачу решил childXml[ar.child(n).name()] = getChild(XML(ar.elements()[n])); // не обновлял имя ребёнка Цитата:
Цитата:
win [object Object] titlepanel [object Object] closebutton [object Object] background [object Object] titlefont [object Object] parameters [object Object] title [object Object] height [object Object] scale [object Object] width [object Object] разве так работать с xml не удобнее? Хотя, в целом, возможно Вы и правы, но мне кажется что так разборчивее и понятнее. Да и парсить в каждом классе не нужно. Добавлено через 10 минут Хотя, Вы подтолкнули меня на (может дурную) идейку, может проще было бы написать парсер который будит вытягивать мне нужных детей из xml? Добавлено через 22 минуты Блин, нет, тогда я не узнаю об обновлениях. Суть в том что мне нужно что бы изер, помимо, встроенных настроек мог пользоваться индивидуальными. А так же знать о новых возможностях. И я подумал что будит проще если я буду держать всё объектами(т.е. один на всю программу). Хотя, парсить в каждом классе xml вычерпывая нужную мне инфу, нет, мне кажется это не совсем удобно, в целом и с объектом так же получается. Блин, просто нужно упростить обращение к xml.
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь! |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Пару лет назад я писал подобный разборщик для CSS. В этом был смысл, ибо стандартный StyleSheet меня ну никак не устраивал. Тот класс тоже разбирал CSS на вложенные объекты с той же самой целью – передача стилей контролам, с несколькими конфетками – приводил типы данных на основе самих данных, умел докачивать дополнительные .css по директиве @import и т.п. Класс содержит 270 строк кода, и это – да, это "парсить". А выдернуть ноду <title /> из кошерной XMLки это, простите, ни разу не парсинг, это одна строчка. Единственный минус XML это вес экземпляра. Только поэтому я и выбрал CSS/Object а не XML, который к тому же ИСКУШАЕТ дать ему две ответственности, как в Вашем случае – заголовок окна никак не является стилем отображения. Для XML нормально смешивать ответственности, для CSS это неприемлемо, что меня и подкупило))
Добавлено через 6 минут http://wolsh.narod2.ru/experience/css_for_components/ класс в действии)) 3 разных стиля описаны в трех .css файлах.
__________________
Reality.getBounds(this); |
|
|||||
|
Вы наверняка в корне не поняли, естественно title это не закоговок а стиль текста в заголовке а ланг1-ланг2 привёл как пример. И вообще, я так понял что бы изменить ваше отношение к теме мне нужно было залить проект и полную xml - ку? Так всё же будит ответ-помощь?
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь! |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Помощь?
Цитата:
__________________
Reality.getBounds(this); |
|
|||||
|
можно взглянуть на реализацию?
Да нет, как раз усугубилась в выборе. Может будит совет?
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь! |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Реализация парсера CSS ничем не поможет в разработке обертки для XML, слишком разные концепции.
Совет.. ну так как Вам удобно, так и хорошо. Возможно (я не утверждаю), что Ваше представление о сложности работы с XML несколько преувеличена. Да и сама стратегия выглядит странновато – " мне неудобно разбирать части XML, поэтому я разберу его целиком". Я не вижу особой разницы между работой в классе какого-то контрола с XML или с Обжектом, как по мне, E4X дает приятные плюшки по выборке нужного из XML. Но если нравится Обжект, то отговаривать не буду. Это вообще не самая интересная проблема в скиннинге. Вот как раз обновление – это действительно интересная тема. А Обжект или XML это вообще не существенно. Добавлено через 2 минуты Разговор один на один так и будет пинг-понгом. Подождем свежей крови. Добавлено через 10 минут Да, еще не озвучил мысль.. Сам по себе "парсинг XML" это идея из времен AS2. Там он был необходим, так как документ разбирался по структуре, по ПОЛОЖЕНИЮ нодов, и преобразовывался в массивы или объекты со свойствами "по имени". Сейчас, с прямым доступом по имени, эта стратегия, как мне кажется, потеряла всякий смысл. XML это и есть Обжект, да еще с интегрированной поисковой системой. Парсить его в его же собственную структуру нет никакого смысла.
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 30.10.2011 в 04:19. |
|
|||||
|
Спасибо, пару часов в пустую ))) хотя, сам парсер получился "в двух строчках", жаль конечно, но вы меня переубедили. На самом деле, что то я так подумал, переделать не долго, жаль только потраченное время.
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь! |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Была у меня локализация, в формате типа
Так вот пока её не перегнал в Object - она тормозила.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:44. |
|
|
« Предыдущая тема | Следующая тема » |
|
|