![]() |
Динамическое изменение атрибутов XML
Существует ли возможность динамического изменения содержимого атрибутов XML? Возьмем, к примеру, слайд-шоу. Выводимые картинки имеют подписи, которые прописаны в соответствующих атрибутах xml. Есть намерение реализовать возможность изменения этих подписей через input textfield, в случае, если у зрителя возникнет такое желание. Типа myXML.firstChild.firstChild.attributes["старая подпись"]=текущее содержимое input textfield. Но реально ли это? В мануале массив XML.attributes определен как
Цитата:
|
Вы грузите хмл с атрибутами извне, верно?
Сам флэш не сможет сохранить измененный хмл на диск пользователя, хотя мгновенно, пока приложение запущено, надпись действительно может поменяться на новую именно как вы хотите. Но после рестарта будет загружен прежний хмл, и опять пользователь увидит прежние надписи, что не есть гуд. Короче, вам надо найти способ сохранять из флэша измененный хмл на диск. В этом могут помочь либо оболочки, либо серверсайд. |
Все именно так и происходит: надпись меняется, но после перезапуска пропадает, в файле xml, естественно, ничего не меняется. А Zinc может помочь в этом случае?
|
А зачем тут Цинк?
Если Вы хотите изменить этот атрибут так, чтобы он отображался по-новому для ВСЕХ, тогда можно просто отправить новый XML (полученный путем редактирования) серверу, где он и сохранится в виде файла. А если Вы хотите, чтобы у пользователя (у конкретно ОДНОГО пользователя) надписи выглядели по-другому, тогда можно сохранить что и на что он заменил через SharedObject |
Zinс отлично справится с сохранением
|
Вообще-то приложение изначально предусмотрено как десктопное и преобразуется в exe цинком. Только сначала пытался делать пересохранение xml средствами Flash, что как указал здесь alexcon314, конечно же, неправильно, а теперь хотелось бы поподробнее узнать о возможностях цинка при обработке xml и вижу, что нужно перемещаться в соответствующую ветку. Просьба модератору переместить тему в "Flash-приложения: Air, Zinc..." Или начинать новую тему?
|
Перемещаемся.
Собственно, mdm.Filesystem.saveFile(), mdm.FileSystem.appendFile() в помощь. Ну и XML.toString(). |
Спасибо, alexcon314, за проявленное понимание. И с ходу, пока еще ничего не делая из предложенных вариантов, хочу уточнить некоторые моменты. Если я правильно понимаю, обработка xml в данном случае производится путем чтения его в строку и затем предполагается дальнейшая обработка его именно как строки, стандартными средствами Flash по работе со строками? То есть у цинка не предусмотрено специальных инструментов для работы с xml: перебор узлов и чтение их содержимого и атрибутов?
|
надо делать примерно так:
-грузим хмл средствами флэша var xml:XML=new XML(); xml.load("myxml.xml"); -используя методы и свойства AS-класса XMLNode, работаем с загруженным хмл-ом: добавляем/удаляем ноды, модифицируем атрибуты и т.д. -когда все готово для сохранения, вызываем mdm.Filesystem.saveFileUnicode("myxml.xml", xml.toString()); mdm.Filesystem.saveFileUnicode() нужен, если сохраняемая информация содержит русские буквы.Иначе потом флэш не сможет их корректно загрузить при последующем редактировании. Т.е. методов для работы с хмл у флэша более, чем достаточно, чтобы желать еще чего-то. Цинк нужен только для сохранения, чего сам флэш делать не может. Впрочем, 10-й плеер лишен этого недостатка: он может сохранять файлы без дополнительных программ-оболочек. Тем не менее, у цинка много фич, которые делают его использование оправданным. |
Ну ФП5 тоже мог сохранять :) Только это прикрыли из-за возможности сделать форматирование диска. В 10 ФП опять можно диск отформатировать???
|
| Часовой пояс GMT +4, время: 19:52. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.