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

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

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

Регистрация: Jul 2007
Сообщений: 306
Smile Самый быстрый xml parser

Мне нужен XML парсер, чтобы парсить тяжелые XML.
Подскажите где достать самый быстрый xml parser
Заранее спасибо.

Старый 01.11.2007, 18:17
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Самый быстрый *— встроенный.
И во что он должен парсить?

Старый 01.11.2007, 18:25
telit вне форума Посмотреть профиль Отправить личное сообщение для telit Найти все сообщения от telit
  № 3  
Ответить с цитированием
telit
 
Аватар для telit

Регистрация: Jul 2007
Сообщений: 306
в Object было бы неплохо.
XML2Object, например, парсит файл размером 80 кб за 450 мс, а мне мах 250 надо!

Нашел прототип, работает быстрее но меньше 300 не получается

Код:
XML.prototype.toObject = function ()
{
	var $xparse = function (n)
	{
		var o = new String (n.firstChild.nodeValue), s, i, t
		for (s = (o == "null") ? n.firstChild : n.childNodes[1]; s != null; s = s.nextSibling)
		{
			t = s.childNodes.length > 0 ? arguments.callee (s) : new String (s.nodeValue)
			for (i in s.attributes) t[i] = s.attributes[i]
			
			if (o[s.nodeName] != undefined)
			{
				if (!(o[s.nodeName] instanceof Array)) o[s.nodeName] = [o[s.nodeName]]
				o[s.nodeName].push (t)
			}
			else o[s.nodeName] = t
		}
		return o
	}
	return $xparse (this)
}

Старый 01.11.2007, 19:05
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Гораздо удобнее было бы похожий метод ХMLNod"у приделать, если уже так сильно нужно. А еще проще - вообще ничего никуда не парсить, ХМЛ сам по себе и так нормально структурирован, зачем усложнять?
Код:
XMLNode.prototype.__resolve = function(p):Object {
	return this.attributes[p];
}
var myXML:XML = new XML("<node a='0'><sub1 a='1'/><sub1 a='2'/><sub1 a='3'/><sub2 a='4'/><sub2 a='5'/></sub1><sub1 a='6'/></node>");
trace(myXML.childNodes[0].a);
trace(myXML.childNodes[0].childNodes[0].a);
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 01.11.2007 в 19:15.
Старый 01.11.2007, 19:13
telit вне форума Посмотреть профиль Отправить личное сообщение для telit Найти все сообщения от telit
  № 5  
Ответить с цитированием
telit
 
Аватар для telit

Регистрация: Jul 2007
Сообщений: 306
Просто xml файл слишком большой, чтобы его вручную разбирать, а загвоздка в том, что нужен универсальный парсер для тегов и аттрибутов.

Старый 01.11.2007, 19:24
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Ну дык ХМЛ - это уже готовый объект с уже написаными, описанными и хорошо работающими свойствами/методами. Зачем его еще во что-то переделывать? А самое главное, что если вы дождались онЛоада, то это значит, что ХМЛ уже 1 раз парсился (получаете-то вы строку, а не ХМЛ)!
Вот, немного переделал код выше, я думаю, что это то, что мешало (длинные имена) а не плохая структура.
Код:
XMLNode.prototype.__resolve = function(p):Object {
	if(!isNaN(p/1)){
		return this.childNodes[p];
	} else {
		return this.attributes[p];
	}
}
var myXML:XML = new XML("<node a='0'><sub1 a='1'/><sub1 a='2'/><sub1 a='3'/><sub2 a='4'/><sub2 a='5'/></sub1><sub1 a='6'/></node>");
trace(myXML.childNodes[0].a);
trace(myXML.childNodes[0].childNodes[0].a);
trace(myXML[0][0].a);
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 02.11.2007 в 00:44.
Старый 02.11.2007, 09:04
terbooter вне форума Посмотреть профиль Отправить личное сообщение для terbooter Найти все сообщения от terbooter
  № 7  
Ответить с цитированием
terbooter

Регистрация: Oct 2006
Адрес: Novosibirsk-Kaliningrad
Сообщений: 1,278
Отправить сообщение для terbooter с помощью ICQ Отправить сообщение для terbooter с помощью Skype™
Не совсем по теме...
А как длина имени влияет на скорость кода?

Старый 02.11.2007, 09:34
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 8  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Цитата:
Сообщение от wvxvw
Ну дык ХМЛ - это уже готовый объект с уже написаными, описанными и хорошо работающими свойствами/методами. Зачем его еще во что-то переделывать?
Для того, чтобы по нему было удобнее перемещаться.
Код:
<root>
	<node>value</node>
	<text>tratata</text>
	<asdf>
		<nodeName>name</nodeName>
	</asdf>
</root>
Для того, чтобы получить значение nodeName методами XMLNode: firstChild.childNodes[2].firstChild.nodeValue
После того как перегнали в объект: obj.asdf.nodeName
т.е. получается доступ по имени, а не по номеру.


Последний раз редактировалось udaaff; 02.11.2007 в 10:17.
Старый 02.11.2007, 13:33
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 9  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Цитата:
Сообщение от terbooter
Не совсем по теме...
А как длина имени влияет на скорость кода?
Я сильно сомневаюсь, что влияет. Суть не в этом. Просто, что я пытаюсь сказать, что нужно еще 10 раз подумать, перед тем, как парсить ХМЛ во что-то другое "более удобное". На мой взгляд, гораздо быстрее, практичнее да и красивше - пользоваться встроенным классом, с уже готовыми АПИ, чем создавать что-то свое со схожим функционалом.

Т.е. если вы сможете написать код, который после события onData() ХМЛя выполнится быстрее, чем onLoad() и создаст объект копирующий структуру загруженного ХМЛЯ - я буду вам дико завидовать. =) Но я не верю, что это возможно даже теоретически =) В любом другом случае, на мой взгляд, операция по превращению ХМЛя во что-то другое лишена смысла.
А если вас не устраивают названия методов childNodes и attributes - дык, я не думаю, что можно от них "избавиться" более практично, чем это сделано в моем коде...

udaaf:
А что ты будешь делать, если получишь такой ХМЛ?
Код:
<root>
	<node>value</node>
	<text>tratata</text>
	<asdf>
		<nodeName>name</nodeName>
	</asdf>
	<asdf>
		<nodeName>name</nodeName>
	</asdf>
</root>
=)
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 02.11.2007 в 13:35.
Старый 02.11.2007, 13:48
screamge вне форума Посмотреть профиль Отправить личное сообщение для screamge Посетить домашнюю страницу screamge Найти все сообщения от screamge
  № 10  
Ответить с цитированием
screamge
Ветеран форума
 
Аватар для screamge

Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
Вообще idMap рулит, чтобы не нагружать мозг для придумывания оригинальных названий можно иметь одинаковые, но это при условии что вы написали класс обрабатывающий хмл и возвращающий нод в виде хмл объекта, что по сути не представляет большой проблемы. Лично я вижу несколько плюсов в написании такого класса.
__________________
Free-lance | Twitter | Me

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

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

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


 


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


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