![]() |
|
||||||||||
|
|||||
|
Регистрация: May 2011
Адрес: Севастополь
Сообщений: 15
|
Доброго времени суток.
Столкнулся с маленькой проблемой, объясните как парсить правильно xml во флеш и как потом эти данные использовать... вот пример: import flash.events.*; import flash.xml.*; var xmlLoader:URLLoader = new URLLoader (new URLRequest("xml/xml.xml")); var xmlData:XML; var xmlList:XMLList; xmlLoader.addEventListener(Event.COMPLETE, getXML); function getXML(e:Event):void { trace ("XML успешно загружен"); trace (e.target.data); xmlData = XML(e.target.data); trace ("xmlData: " + xmlData); xmlList = xmlData.children(); trace ("xmlList: " + xmlList); } TypeError: Error #1092: XML parser failure: Unterminated XML declaration. at game_fla::MainTimeline/getXML() at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at flash.net::URLLoader/flash.net:URLLoader::onComplete() <?xml version="1.0" encoding="UTF-8"> <initGame> <level id="1" small="images/small_1.jpg" big="images/big_1.jpg"> <tags id="1" what="Часы" text="Очень холодно"> <tags id="2" what="Секундомер" text="Очень холодно"> <tags id="3" what="Кошка" text="Очень холодно"> <tags id="4" what="Ботинок" text="Очень холодно"> <tags id="5" what="Шлем" text="Очень холодно"> <tags id="6" what="Бублик" text="Очень холодно"> <tags id="7" what="Ложка" text="Очень холодно"> <tags id="8" what="Рыба" text="Очень холодно"> </level> </initGame> а задача в том, чтобы эти данные можно было использовать. т.е. как то вынести это в массив объектов ... чтобы это потом можно было использовать Последний раз редактировалось shmblra; 04.05.2011 в 15:38. |
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Ну, допустим нужно получить отсюда атрибуты тегов:
Соответственно это можно прикрутить к переменным, и использовать их. Либо сформировать объекты, которые затолкать в обычный массив, либо еще как-нибудь. Последний раз редактировалось goodguy; 04.05.2011 в 16:44. |
|
|||||
|
Регистрация: May 2011
Адрес: Севастополь
Сообщений: 15
|
Спасибо, буду пробовать
А что значит ошибка, что выше описал? она меня очень смущает ... ошибка в этом... а как исправить не знаю |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Кривой xml. Закрывать тег tags надо, например <tags id="1" what="Часы" text="Очень холодно"/>
Прямизну хмл я проверял на http://www.validome.org/xml/validate/ (поставить галку Well-Formedness only)
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Регистрация: May 2011
Адрес: Севастополь
Сообщений: 15
|
Большое спасибо)))
Буду разбираться |
|
|||||
|
Древовидные структуры можно обрабатывать по-разному: и вглубь и вширь. Смотря какую структуру данных хотите получить на выходе. Например в Вашем случае можно создать массив объектов следующим способом:
public class Tag { var id:int; var what:String; var text:String; public Tag(i:int, w:String, t:String) { id = i; what = w; text = t; } } var x:XML = new XML('<initGame> \ <level id="1" small="images/small_1.jpg" big="images/big_1.jpg"> \ <tags id="1" what="Часы" text="Очень холодно"/> \ <tags id="2" what="Секундомер" text="Очень холодно"/> \ <tags id="3" what="Кошка" text="Очень холодно"/> \ <tags id="4" what="Ботинок" text="Очень холодно"/> \ <tags id="5" what="Шлем" text="Очень холодно"/> \ <tags id="6" what="Бублик" text="Очень холодно"/> \ <tags id="7" what="Ложка" text="Очень холодно"/> \ <tags id="8" what="Рыба" text="Очень холодно"/> \ </level> \ </initGame> '); var result:Array = new Array() /*of Tag*/; for each(var e:XML in x.level.children()) { result.push(new Tag(e.@id, e.@what, e.@text)); } Последний раз редактировалось surlac; 04.05.2011 в 17:10. |
|
|||||
|
Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
|
Меня вот иногда интересует вопрос. А зачем вам что-то парсить? E4X сам по себе удобен, чтобы использовать XML напрямую, без лишних теловижений
.Единственное, что приходит в голову, когда это может понадобится - это если формат входных данных не один (+ json к примеру, или еще чего свое), и с разных инпутов надо получить единую структуру данных в проекте... Ну или же поддержка такой ситуации предполагается. Однако парсить ради процесса, мне кажется, совсем нет необходимости . |
|
|||||
|
Регистрация: May 2011
Адрес: Севастополь
Сообщений: 15
|
Огромное всем спасибо
![]() вроде бы понял что к чему ![]() |
|
|||||
|
Для отделения основной программы от xml, например. Предположим есть система, которая не должна зависеть от структуры конфигурационных файлов(xml) - она принимает объекты, обладающие известным ей интерфейсом и работает с ними. В зависимости от xml подключается модуль-парсер, который генерит ей эти объекты.
В итоге при изменении структуры xml вместо одной библиотечки-парсера вы подсовываете другую, без изменения самой системы. Модульность. |
|
|||||
|
Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
|
Ну, это частный случай того подхода, что я описал - отказаться от xml, как внутреннего представления, задачи могут быть разные
. Я спрашивал у автора, может это ему и не нужно, и он просто лишнее время тратит. |
![]() |
![]() |
Часовой пояс GMT +4, время: 05:31. |
|
|
« Предыдущая тема | Следующая тема » |
|
|