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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 20.11.2010, 18:00
Mur4ik вне форума Посмотреть профиль Отправить личное сообщение для Mur4ik Найти все сообщения от Mur4ik
  № 11  
Ответить с цитированием
Mur4ik
ветеран форума

Регистрация: Sep 2008
Сообщений: 717
Записей в блоге: 4
Отправить сообщение для Mur4ik с помощью ICQ
Не изобретайте велосипед, гляньте на класс SimpleXMLEncoder, вполне способен справится с Вашей задачей.

Код AS3:
private function objectToXML(object:Object, rootNode:String = "root"):XML
{
	import mx.rpc.xml.SimpleXMLEncoder;
 
	var xmlDocument:XMLDocument = new XMLDocument();
	var xmlEncoder:SimpleXMLEncoder = new SimpleXMLEncoder(xmlDocument);
	xmlEncoder.encodeValue(object, new QName(rootNode), xmlDocument);
 
	return new XML(xmlDocument.toString());
}
Правда в чистом виде он тащит за собой около 20Кб флексовых классов, но это не проблема, я когда то делал из него независимую версию, вышло что то около 5Кб по итогу. Если нужно попробую отрыть и прикреплю тут.
__________________
trace("Остановите Землю, я сойду!!!");


Последний раз редактировалось Mur4ik; 20.11.2010 в 18:42.
Старый 20.11.2010, 18:14
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 12  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
о, на что-то такое я и надеялся
буду смотреть

Добавлено через 1 час 18 минут
все работает

возможно, кому понадобится полностью (оформил как простой код, поскольку в AS3 перекодируется JSON):

Код:
package 
{
	import flash.display.*;
	import flash.events.*;
	import flash.xml.*;
	import mx.rpc.xml.SimpleXMLEncoder;
	import com.adobe.serialization.json.*;	
	
	public class Main extends Sprite 
	{
		
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
		
		private function init(e:Event = null) : void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			
			var stringJSON:String = '{"param1":"1","param2":"</blabla","param3":"blabla]]>",'
	                               +'"paramArray":[{"id":"1","value":"111"},{"id":"2","value":"222"}]}';

			var objXML:XML = jsonToXML(stringJSON);
			trace(objXML);
		}
		
		private function jsonToXML(stringJSON:String) : XML
		{
			var obj:Object = JSON.decode(stringJSON); 
			var objXML:XML = objectToXML(obj);
			
			return(objXML);
		}
		
		private function objectToXML(object:Object, rootNode:String = "root") : XML
		{
			var xmlDocument:XMLDocument = new XMLDocument();
			var xmlEncoder:SimpleXMLEncoder = new SimpleXMLEncoder(xmlDocument);
			xmlEncoder.encodeValue(object, new QName(rootNode), xmlDocument);
		 
			return new XML(xmlDocument.toString());
		}
	}
	
}

вывод:

Код:
<root>
  <param1>1</param1>
  <param2>&lt;/blabla</param2>
  <param3>blabla]]&gt;</param3>
  <paramArray>
    <item>
      <id>1</id>
      <value>111</value>
    </item>
    <item>
      <id>2</id>
      <value>222</value>
    </item>
  </paramArray>
</root>


Последний раз редактировалось mikhailk; 20.11.2010 в 19:40.
Создать новую тему Ответ Часовой пояс GMT +4, время: 14:55.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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