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

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

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

Регистрация: Jan 2014
Сообщений: 181
Отправить сообщение для zackscript с помощью Skype™
По умолчанию Сохранение XML

Здравствуйте, в данном сценарии хотел записать в целом XML с помощью метода writeObject() класса файлСтрим
Код AS3:
// импортируем нужные нам классы
import flash.net.URLLoader;
import flash.events.Event;
import flash.net.URLRequest;
import flash.desktop.NativeApplication;
import flash.filesystem.FileStream;
import flash.filesystem.FileMode;
import flash.filesystem.File;
 
// создаем новый объект URLLoader
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
// событие на успешное завершения загрузки
loader.addEventListener(Event.COMPLETE, HComplete);
// загружаем сам файл "family";
loader.load(new URLRequest("family.xml"));
function HComplete(e:Event):void
{
	//Преобразуем загруженный текст а экземпляр XML
	var example:XML = new XML(e.target.data);
	// готов к изпользованию :)
	delete example.sister;//например хочу удалить элемент - sister
	// путь к файле 
	var file:File = File.documentsDirectory.resolvePath("family.xml");
	var stream:FileStream = new FileStream();
	stream.open(file, FileMode.WRITE);
	// записываю объект XML;
	stream.writeObject(example);
	stream.close();
	trace(example);
но открыв сам файл family.xml, как и было:
Код:
<?xml version="1.0" encoding="UTF-8"?>
<family>
<father>jarry</father>
<mother>carrol</mother>
<sister>coral</sister>
</family>
так и осталось
В своем примере я хотел удалить элемент sister что и получилось

но в самом файле ни каких изменений , может что-то я не правильно делаю.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Код AS3:
			stream.open(file, FileMode.WRITE);
			var bytes:ByteArray = new ByteArray();
			bytes.writeUTFBytes(example.toXMLString());
			stream.writeBytes(bytes);
			stream.close();
__________________
Reality.getBounds(this);

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

Регистрация: Jan 2014
Сообщений: 181
Отправить сообщение для zackscript с помощью Skype™
Сестренка так и не удалилась с семьи
Странно конечно , ведь XML с измененными параметрами должна была записаться , trace показывает два элемента xml как и должно быть
trace(example.toXMLString()) тоже показывает два элемента (как и должно быть), не пойму в чем ошибка .

Старый 15.03.2016, 20:00
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 4  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Не тот файл открываете )
Откройте в примере тот же файл и выведите трейс.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
// загружаем сам файл "family";
loader.load(new URLRequest("family.xml"));
Откуда загружаем? Ты думаешь что таким образом ты его загрузишь из папки Documents?
Нет, так он грузится из директории приложения.
А дальше у тебя идет
Код AS3:
var file:File = File.documentsDirectory.resolvePath("family.xml");
Что, логично было бы заменить на File.applicationDirectory.resolvePath("family.xml");
Но фиг то там, applicationDirectory не даст тебе записывать файлы "read only" (хотя если создавать базу данных через SQLConnection, то прекрасно создается), только вчера с этим столкнулся. Так что выход тут один, использовать File.applicationStorageDirectory

И грузить файл не так
Код AS3:
loader.load(new URLRequest("family.xml"));
а так
Код AS3:
loader.load(new URLRequest(File.applicationStorageDirectory.resolvePath("family.xml").nativePath)); // при условии, что он там есть, иначе будет IOError
Если делаешь под мобилы, то на андроиде nativePath возвращает пустую строку, поэтому там это надо заменить на .url
__________________
Ко мне можно и нужно обращаться на ты)

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

Регистрация: Jan 2014
Сообщений: 181
Отправить сообщение для zackscript с помощью Skype™
caseyryan, File.applicationStorageDirectory ? но так ведь я создаю десктопное приложение и заменив его на
Код AS3:
var file:File = File.desktopDirectory.resolvePath("family.xml");
файл успешно создался нежели записалась(с измененным содержимым ) и создалась она в рабочем столе.
Почему интересно ?

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Потому что File.desktopDirectory это Рабочий стол, очевидно?

Класс File содержит статические свойства, которые позволяют указать часто используемые местоположения каталогов. К таким статическим свойствам относятся следующие:

File.applicationStorageDirectory — каталог хранилища, который является уникальным для каждого установленного приложения AIR
File.applicationDirectory — каталог только для чтения, в который устанавливается приложение (вместе с установленными активами)
File.desktopDirectory — каталог рабочего стола пользователя
File.documentsDirectory — каталог с документами пользователя
File.userDirectory — каталог пользователя

(http://help.adobe.com/ru_RU/FlashPla...stem/File.html)
__________________
Reality.getBounds(this);

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

Регистрация: Jan 2014
Сообщений: 181
Отправить сообщение для zackscript с помощью Skype™
Сделал так но безрезультатно
как говорит helpAdobe
Цитата:
File.applicationStorageDirectory — каталог хранилища, который является уникальным для каждого установленного приложения AIR
почему не записывает я не пойму
Код AS3:
// импортируем нужные нам классы
import flash.net.URLLoader;
import flash.events.Event;
import flash.net.URLRequest;
import flash.desktop.NativeApplication;
import flash.filesystem.FileStream;
import flash.filesystem.FileMode;
import flash.filesystem.File;
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
loader.addEventListener(Event.COMPLETE, HComplete);
loader.load(new URLRequest("family.xml"));
function HComplete(e:Event):void
{
	var example:XML = new XML(e.target.data);
	delete example.sister;//например хочу удалить элемент - sister
	var bytes:ByteArray = new ByteArray();
	bytes.writeUTFBytes(example.toXMLString());
	var file:File = File.applicationStorageDirectory.resolvePath("family.xml");
	var stream:FileStream = new FileStream();
	stream.open(file, FileMode.WRITE);
	stream.writeBytes(bytes);
	stream.close();
	trace(example);
}

Старый 17.03.2016, 14:24
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 9  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
А где ты проверяешь?
Путь к сохраненному файлу должен быть прмерно такой:
C:\Users\ТУТ_ТВОЕ_ИМЯ_ПОЛЬЗОВАТЕЛЯ\AppData\Roaming\ТУТ_ПАКЕТ_ТВОЕГО_ПРИЛОЖЕНИЯ\Local Store

Добавь после trace(example) такую строчку:
Код AS3:
trace(file.nativePath);
И посмотри где у тебя этот файл сохраняется
__________________
Ко мне можно и нужно обращаться на ты)

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

Регистрация: Jan 2014
Сообщений: 181
Отправить сообщение для zackscript с помощью Skype™
пишет: C:\Users\Zack\AppData\Roaming\noName\Local Store\family.xml

Добавлено через 11 минут
Проверил этот файл и он действительно там создан с измененным содержимым :|
Но почему тот файл.xml который находится в папке с проектом остался не тронутым ?

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

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

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


 


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


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