Модераторы: SoWa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> удобная работа с XML, получите удовольствие 
:(
    Опции темы
PROCESSOR
Дата 15.7.2005, 07:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 25.5.2005

Репутация: нет
Всего: нет



Пример как можно очень удобно работать с XML данными без всякого лазанья по узлам. Причем еще не верх совершенства, а просто быстрый набросок:

пример XML базы ( таблица ).

<book q='1' w='2' e='3' n='name1' />
<book q='1' w='2' e='3' n='name1' />
<book q='1' w='2' e='3' n='name1' />
<book q='1' w='2' e='3' n='name1' />


Код

// LOAD XML 
// имитация загрузки
data="<book q='1' w='2' e='3' n='name1'/><book q='1' w='2' e='3' n='name2'/><book q='1' w='2' e='3' n='name3'/><book q='1' w='2' e='3' n='name4'/>"
var xm=new XML()
xm.parseXML (data)

// перевод в удобную обьектную модель
book=new Array()
for (z=0 ; z <xm.childNodes.length ; z++) {
    ob=new Object()
    ob.q=xm.childNodes[z].attributes.q
    ob.w=xm.childNodes[z].attributes.w
    ob.e=xm.childNodes[z].attributes.e
    ob.name=xm.childNodes[z].attributes.n
    book[z]=ob
}
// вывод и любая работа с обьектами
trace (book[1].name) 

// перевод в XML обратно, после изминений ( если их нет, то и переводит ненадо )
var tx
for (z=0 ;z<book.length ; z++) {
    tx+="<book q='"+book[z].q+"' w='"+book[z].w+"' e='"+book[z].e+"' n='"+book[z].name+"' />"
}
xm=parseXML (tx)

// SAVE XML


- Теперь к любой книге можно обратиться просто как в массиве. book[номер].
- Обращение к аттрибутам естественное: book[номер].имяаттрибута
- С массивом можно вытворять всё что угодно. См. Array функции. И потом он обратно преобразуется в XML.
- Можно добавлять бесконечное количество новых аттрибутов , но для этого надо будет слегка изменить код. Аттрибуты в цикле обрабатывать. Пример: book[5].color='red'.
- Код практически универсален для AS, PHP, JS .
- Вообщем базу можно устроить как угодно и код под неё подогнать, но общие принципы, помоему ясны.
- Помоему это легко , примитивно, но очень полезно .


smile

Это сообщение отредактировал(а) PROCESSOR - 15.7.2005, 07:44
PM MAIL   Вверх
AlDev
Дата 15.7.2005, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 9
Всего: 50



идея стара как мир smile
http://batsuev.com/wp/?page_id=38
Добавлено @ 07:49
Цитата(PROCESSOR @ 15.7.2005, 12:42)
trace (book[1].name)

косяк. А вдруг мне захочется прицепить к book[1] переменную name?

Цитата(PROCESSOR @ 15.7.2005, 12:42)
for (z=0 ; z <xm.childNodes.length ; z++) {
    ob=new Object()
    ob.q=xm.childNodes[z].attributes.q
    ob.w=xm.childNodes[z].attributes.w
    ob.e=xm.childNodes[z].attributes.e
    ob.name=xm.childNodes[z].attributes.n
    book[z]=ob
}

делать надо рекурсивно. Дабы всё дерево обойти

Цитата(PROCESSOR @ 15.7.2005, 12:42)
И потом он обратно преобразуется в XML.

ничего обратно не преобразуется smile просто book[z] и xm.childNodes[z] - это один и тот-же объект, если его записать как
book[z] = xml.childNodes[z].


Цитата(PROCESSOR @ 15.7.2005, 12:42)
- Можно добавлять бесконечное количество новых аттрибутов , но для этого надо будет слегка изменить код. Аттрибуты в цикле обрабатывать. Пример: book[5].color='red'.


зачем код трогать? а не проще всё и сразу?
Код

var j:String;
for (j in xm.childNodes[i].attributes)
{
  book[z][j] = xm.childNodes[i].attributes[j];
}

Добавлено @ 07:51
как всё это у меня работает:
Цитата


< ?xml version=’1.0′? >
<items>
  <item some_attr=’val_1′/>
  <item some_attr=’val_2′/>
</items>

как бзать класс:

пусть верхний xml лежит в doc.
тогда:

import com.batsuev.utils.XMLUtils

XMLUtils.setObjectModel(doc);
Flashout.info(doc[’items’][0][’item’][0].attributes.some_attr);
Flashout.info(doc[’items’][0][’item’][1].attributes.some_attr);


Это сообщение отредактировал(а) Alex Batsuev - 15.7.2005, 10:05
PM MAIL WWW ICQ YIM MSN   Вверх
Caramel
Дата 15.7.2005, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4190
Регистрация: 7.8.2004
Где: Дюссельдорф

Репутация: 2
Всего: 142



smile

Саша ты просто монстр какой-то smile
PM MAIL WWW Skype   Вверх
AlDev
Дата 15.7.2005, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 9
Всего: 50



Цитата(Caramel @ 15.7.2005, 14:48)
smile

Саша ты просто монстр какой-то smile

почему?
PM MAIL WWW ICQ YIM MSN   Вверх
PROCESSOR
Дата 15.7.2005, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 25.5.2005

Репутация: нет
Всего: нет



Думал как оптимизировать и укоротить ...

А ведь можно просто написать: book=xml.childNodes и можно обращаться как book[z] и нендо вообще ничо никуда переводить, а для работы с с аттрибутами obj=book[z].attributes , и обращаться как obj.name

Поэтому вроде эти функции вообще ненужны ... smile
PM MAIL   Вверх
AlDev
Дата 16.7.2005, 02:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 9
Всего: 50



у тебя сильно кастомное решение
PM MAIL WWW ICQ YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Flash"
AlDev
SoWa
  • Если вы хотите предложить кому-либо работу, то пишите или в личку, или оставляйте сообщения в специально предназначеном для этого форуме "Объявления о найме специалистов"
  • Один вопрос - одна тема. Не надо переходов от одного вопроса к другому.
  • Если вы хотите показать какой-нибудь ваш мульт, причём показать, а не предоставить исходник, то вам сюда
  • Вопросы про программирование на ActionScript 1,2 (Flash 8 и более ранние версии) пишите в форуме ActionScript 1,2
  • Вопросы по разработке интернет-приложений на Flex и вопросы по MXML пишите в раздел Flex
  • Смотрим в будущее. ActionScript 3 обсуждается в форуме ActionScript 3
  • Новости из мира Flash.
  • New! [code=ascript][/code] - подсветка ActionScript + wikipedia help

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, AlDev, SoWa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Flash | Следующая тема »


 




[ Время генерации скрипта: 0.0461 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.