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

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

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

Регистрация: May 2014
Сообщений: 29
По умолчанию Преобразование xml-файлов

Доброе время суток!
Хотелось бы узнать, как в ActionScript 3.0 наиболее простым способом можно сделать преобразование xml файлов?
А именно, надо сделать, чтобы внутри каждого xml файла эти строки:
Код:
<Account>42301810363229727150</Account>
<Op_Date>01.04.1994</Op_Date>
<Balance>151.12</Balance>
преобразовывались в:
Код:
<Data>
   <ACC>
     <External_Key>45356</External_Key>
     <Account>42301810363229727150</Account>
     <Op_Date>01.04.1994</Op_Date>
     <Balance>151.12</Balance>
   </ACC>
</Data>
Какие функции есть для преобразования? И кто-нибудь с таким сталкивался? Возможно ли это сделать на ActionScript во Flash Builder?
Заранее спасибо )

Старый 15.09.2014, 18:22
nubideus вне форума Посмотреть профиль Отправить личное сообщение для nubideus Найти все сообщения от nubideus
  № 2  
Ответить с цитированием
nubideus

Регистрация: Jan 2013
Сообщений: 322
Цитата:
<External_Key>45356</External_Key>
это рандом?

Цитата:
Какие функции есть для преобразования? И кто-нибудь с таким сталкивался? Возможно ли это сделать на ActionScript во Flash Builder?
аутизм

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

Регистрация: Sep 2014
Сообщений: 4
Написать свой парсер.

В данном случае вы просто к началу и к концу строки прибавляете "<Data><ACC>" и "</ACC></Data>" соответственно.

Старый 15.09.2014, 18:44
AlexAS3 вне форума Посмотреть профиль Отправить личное сообщение для AlexAS3 Найти все сообщения от AlexAS3
  № 4  
Ответить с цитированием
AlexAS3

Регистрация: May 2014
Сообщений: 29
Цитата:
Сообщение от Cyclopoper Посмотреть сообщение
В данном случае вы просто к началу и к концу строки прибавляете "<Data><ACC>" и "</ACC></Data>" соответственно.
Дело в том, что таких записей много, и они внутри других, которые менять не надо.

<External_Key>45356</External_Key> - можно счетчик, можно рандом, но надо добавлять будет.

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

Регистрация: Jan 2008
Адрес: Земля
Сообщений: 178
Если архитектура всегда такая
Код:
<Account>42301810363229727150</Account>
<Op_Date>01.04.1994</Op_Date>
<Balance>151.12</Balance>
и неизменна, то можно просто:
Код:
var XMLStr:String = "ТЕКСТ ВАШЕГО XML-ФАЙЛА";
var External_Key:Number = 45356;

XMLStr = XMLStr.split("<Account>").join("<Data><ACC><External_Key>" + External_Key + "</External_Key><Account>");
XMLStr = XMLStr.split("</Balance>").join("</Balance></ACC></Data>");
Если External_Key неизменный (ну т.е. будет одно значение во всех объектах "<ACC>")

Старый 15.09.2014, 20:48
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 6  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Код AS3:
var src:XML =
<root>
	<Account>42301810363229727150</Account>
	<Op_Date>01.04.1994</Op_Date>
	<Balance>151.12</Balance>
</root>
 
var key:int = 1000 * Math.random();
var res:XML =<Data><ACC><External_Key>{key}</External_Key></ACC></Data>;
for each(var node:XML in src.*)
{
	res.ACC.appendChild(node);
 
}
 
trace( "src : " + src.toXMLString() );
trace( "res : " + res .toXMLString());

Старый 17.09.2014, 13:54
AlexAS3 вне форума Посмотреть профиль Отправить личное сообщение для AlexAS3 Найти все сообщения от AlexAS3
  № 7  
Ответить с цитированием
AlexAS3

Регистрация: May 2014
Сообщений: 29
Спасибо, с преобразованием ХМЛ файла более менее понятно. Но теперь никак не могу сделать, чтобы файл сохранялся на диск C. Использовал пример с этого форума:

var file:File = File.desktopDirectory.resolvePath("C:\\1\save1.xml");
var fileStream:FileStream = new FileStream(); // создаем поток
fileStream.open(file, FileMode.WRITE); // открываем файл в режиме записи
fileStream.writeMultiByte(str, "Windows-1251"); // сохраняем эту строку
fileStream.close(); // закрываем поток

Но файл не создается в этой директории (а также директория тоже не создается). А если Flash Builder запускать не под администратором, то вообще ошибка выходит.

как оказалось, создается файл на диске C с именем 1save1.xml, но мне надо, чтобы директория создавалась.

Работает только сохранение на рабочий стол: var file:File = File.desktopDirectory.resolvePath("savedfile1.xml");
Но мне надо много файлов сохранять, рабочий стол не подходит для этого...
Может, кто-нибудь знает, как сохранить файл на диск?


Последний раз редактировалось AlexAS3; 17.09.2014 в 17:11.
Старый 17.09.2014, 17:57
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 8  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Цитата:
File.appStorageDirectory
Позволяет сохранять файлы без спроса юзера. Обычно там сохраняются всякие настройки и конфиги air приложения.
Если файлы нужны будут самому юзеру, используйте
Код AS1/AS2:
File.browseForDirectory
, чтобы юзер сам выбрал директорию в которой можно сохранять.
__________________
Отряд Котовскага

Старый 17.09.2014, 18:36
AlexAS3 вне форума Посмотреть профиль Отправить личное сообщение для AlexAS3 Найти все сообщения от AlexAS3
  № 9  
Ответить с цитированием
AlexAS3

Регистрация: May 2014
Сообщений: 29
Котяра, мне надо сохранять очень много фалов, каждый раз выбирать пользователю - это долго.

Но я, кажется, разобрался - надо было написать так: C://1/save1.xml и запустить под администратором.
Сейчас директория создалась.

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

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Код AS3:
fileStream.writeMultiByte(str, "Windows-1251");
21й век на дворе. Используйте utf-8.

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

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

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


 


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


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