PDA

Просмотр полной версии : Какие есть общедоступные XML парсеры?


WindWalker
14.07.2007, 23:49
В проектах часто приходится работать с данными в виде XML.
Написал несколько самописных XML-парсеров.
В принципе, неплохие.

Но явно кто-то делал это и раньше. Какие есть удобные общедоступные XML-парсеры на AS 2.0?
Просто хочу сравнить со своими. Может быть в чём-то улучшить.

Скрипун
15.07.2007, 00:30
чет я сомневаюсь в рациональности писать самопальные парсеры во Flash... Напиши идентичный стандартному и проверь скорость последнего со стандартным.

Dr.OH
15.07.2007, 01:26
??? вы че??? можно еще за компанию написать код, который будет разбирать swf-файлы и выводить их через Bitmap... но зачем? во флэше уже есть свой замечательный парсер и есть куча классов-оберток (назовем их так), которые автоматизируют работу парсера и делают использование этого класса более удобным. Но сам парсер ни в коем случае писать не надо!!!

Sh@man
15.07.2007, 04:04
http://proto.layer51.com/d.aspx?f=858

etc
15.07.2007, 11:15
Ну и зачем вам нужно перемешивать в миксере XML-объект?

WindWalker
16.07.2007, 15:18
во флэше уже есть свой замечательный парсер и есть куча классов-оберток (назовем их так), которые автоматизируют работу парсера и делают использование этого класса более удобным. Но сам парсер ни в коем случае писать не надо!!!
Вот про это я и говорил - про класс обёртку, чтобы обращаться к узлам не через firstChild/nextSibling, а через dot-нотацию.

Ну и зачем вам нужно перемешивать в миксере XML-объект?

Потому что что-нить типа data.users.user[2].name или config.server.url выглядят гораздо понятнее, чем xml.firstChild.firstChild.childNodes[2].firstChild.nodeValue.

И, кроме того, в меньшей степени зависят от порядка узлов (и наличия/отстутсвия других узлов).

2Sh@man

Спасибо. Забавно, как много общего с моим парсером :)

etc
16.07.2007, 15:29
Я советую прочитать эту (http://flasher.ru/forum/showthread.php?t=90328) тему, прежде чем заниматься несвойственной для ООП деятельностью.

WindWalker
16.07.2007, 15:50
Оказывается, отображение XML в DOM - это несвойственная для ООП деятельность...

etc
16.07.2007, 15:51
Я понимаю ещё приводить к E4X-виду, но в данном случае это придумывание какой-то фигни.

WindWalker
16.07.2007, 15:55
Увы, в AS1.0/2.0 полностью привести к E4X виду не представляется возможным. Но приблизиться - можно.

А такая "фигня", кстати, давным давно используется в JavaScript.

etc
16.07.2007, 15:57
А такая "фигня", кстати, давным давно используется в JavaScript.
Угу, только там ООП все-равно что на AS1 писать классы. (Ваня Дембицкий был когда-то фанатом этого дела).

WindWalker
16.07.2007, 16:03
Кто сильно жаждет следовать парадигме тру-ООП - пусть следует.
Пусть для разбора простенького конфиг-файла ему потребуется 20-30 классов. Зато тру.

Меня вполне удовлетворяет и недо-ООП, где некоторые объекты применяются не как объекты, а как хеш-таблицы с дот-нотацией.


P.S.
Правда, тогда не совсем ясно, почему E4X - это тру?

etc
16.07.2007, 16:16
Потому что E4X есть отдельный стандарт. К тому же, он преобразуется в AS-код.

WindWalker
16.07.2007, 16:18
А если DOM преобразовали в AS-код - это плохо?

Кстати, чисто внешне, за редкими исключениями, никто даже и не заметит разницу.

etc
16.07.2007, 16:20
Я говорю о том, что при создании вот таких вот «аналогов» ни о какой мало-мальски типизации даже речи быть не может.

WindWalker
16.07.2007, 16:22
А как в E4X поддерживается типизация?

Dr.OH
16.07.2007, 16:42
E4X сам по себе является стандартом ;)
типизация, наверное, имеется в виду, что все будут использовать этот класс для всех случаев...

WindWalker
16.07.2007, 16:58
E4X сам по себе является стандартом
DOM level 1 тоже является стандартом.

типизация, наверное, имеется в виду, что все будут использовать этот класс для всех случаев...
Во-первых, не все, а те, кому заказчик дал отмашку на использование Flash Player 9.
Во-вторых, под типизацией скорей всё же подразумевалось, что редактор/компилятор смогут чётко определить тип и, соответственно, список членов. И в случае опечатки - сообщить об этом.
Но боюсь, при использовании E4X это не выйдет.
Максимум - в процесе выполнения вывалит исключение.

etc
16.07.2007, 17:15
А как в E4X поддерживается типизация?
Это вообще другой подход, другая организация работы. А «аналоги» работают на динамических объектах, у которых нет нужных методов, как в e4x. В e4x каждый объект является XMLList, там производится поиск нужных элементов и т.п. со строгой типизацией.

WindWalker
16.07.2007, 18:49
А если в "аналоге" каждый объект так же принадлежит строго одному классу (правда называется иначе)?
Правда класс, само собой, dynamic. Без этого никак.

etc
16.07.2007, 19:35
В E4X нет динамических классов. Что-то подобное можно реализовать в AS2, используя __resolve.

WindWalker
16.07.2007, 22:00
1. Можно подумать большая разница (в плане чистоты ООП)!
2. В AS2 нельзя использовать __resolve для нединамических классов.

etc
16.07.2007, 22:58
1. Безусловно. Динамика должна быть там, где она действительно необходима;
2. Ну вот я к тому и клоню, что нерентабельно это.

Впрочем, делайте как хотите, я не заставляю не делать этого :D

BACRHR
18.07.2007, 07:10
Есть замечательная вещь, называеться XPath. Взять можно тут (http://www.xfactorstudio.com/). А вот почитать про нее можно тут (http://www.oreillynet.com/pub/a/javascript/excerpt/ActionScriptCkbk_chap1/index1.html?page=3)

WindWalker
18.07.2007, 13:59
Да, XPath хорошая штука. Правда, к сожалению, не очень шустрая.