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

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

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

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
По умолчанию XML Parsing?

Доброго время суток.

Появилась задача, распарсить xml файл, что то типа JSONDecoder.

Что пытаюсь сделать я:

Код AS3:
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 минуты
а ... что хотел то получить:
Код AS3:
for(n in ob) trace(n, ob[n]); // windowstyle, [object]
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь!

Старый 30.10.2011, 02:44
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 2  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Может, я что-то не понимаю, но зачем? Зачем делать Обжект, если уже есть кошерный XML? Чем он плох? И как, например, Вы представляете себе в обжекте наличие одновременно двух свойств lang? Объяснитесь подробней.
__________________
Reality.getBounds(this);

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

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
Код AS3:
// одну задачу решил
childXml[ar.child(n).name()] = getChild(XML(ar.elements()[n]));
// не обновлял имя ребёнка
Цитата:
Может, я что-то не понимаю, но зачем? Зачем делать Обжект, если уже есть кошерный XML?
Может по тому что с объектом работать проще(удобнее)?
Цитата:
И как, например, Вы представляете себе в обжекте наличие одновременно двух свойств lang?
Код AS3:
ob.lang = { ru:"", en:"" };
Добавлено через 5 минут
Код AS3:
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?
Код AS3:
var ob:Object = XMLParcer.getResult("title")
Добавлено через 22 минуты
Блин, нет, тогда я не узнаю об обновлениях. Суть в том что мне нужно что бы изер, помимо, встроенных настроек мог пользоваться индивидуальными. А так же знать о новых возможностях. И я подумал что будит проще если я буду держать всё объектами(т.е. один на всю программу). Хотя, парсить в каждом классе xml вычерпывая нужную мне инфу, нет, мне кажется это не совсем удобно, в целом и с объектом так же получается. Блин, просто нужно упростить обращение к xml.
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь!

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

модератор форума
Регистрация: 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);

Старый 30.10.2011, 03:32
stweet вне форума Посмотреть профиль Отправить личное сообщение для stweet Найти все сообщения от stweet
  № 5  
Ответить с цитированием
stweet
 
Аватар для stweet

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
Вы наверняка в корне не поняли, естественно title это не закоговок а стиль текста в заголовке а ланг1-ланг2 привёл как пример. И вообще, я так понял что бы изменить ваше отношение к теме мне нужно было залить проект и полную xml - ку? Так всё же будит ответ-помощь?
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь!

Старый 30.10.2011, 03:35
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 6  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Помощь?
Цитата:
собственно чего я добивался.
разве так работать с xml не удобнее?
Я так понял, проблемы уже нет. Если есть, то хоть объясните ее.
__________________
Reality.getBounds(this);

Старый 30.10.2011, 03:42
stweet вне форума Посмотреть профиль Отправить личное сообщение для stweet Найти все сообщения от stweet
  № 7  
Ответить с цитированием
stweet
 
Аватар для stweet

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
Цитата:
Сообщение от Wolsh Посмотреть сообщение
класс в действии)) 3 разных стиля описаны в трех .css файлах.
можно взглянуть на реализацию?

Цитата:
Сообщение от Wolsh Посмотреть сообщение
Я так понял, проблемы уже нет. Если есть, то хоть объясните ее.
Да нет, как раз усугубилась в выборе. Может будит совет?
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь!

Старый 30.10.2011, 04:07
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 8  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: 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.
Старый 30.10.2011, 04:32
stweet вне форума Посмотреть профиль Отправить личное сообщение для stweet Найти все сообщения от stweet
  № 9  
Ответить с цитированием
stweet
 
Аватар для stweet

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
Спасибо, пару часов в пустую ))) хотя, сам парсер получился "в двух строчках", жаль конечно, но вы меня переубедили. На самом деле, что то я так подумал, переделать не долго, жаль только потраченное время.
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь!

Старый 30.10.2011, 13:37
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 10  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Была у меня локализация, в формате типа
Код:
<loc>
<string id="strid1">text1</string>
<string id="strid2">text2</string>
...
</loc>
Так вот пока её не перегнал в Object - она тормозила.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

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

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

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


 


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


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