Показать сообщение отдельно
Старый 24.05.2012, 20:46
RJ Presto вне форума Посмотреть профиль Отправить личное сообщение для RJ Presto Найти все сообщения от RJ Presto
  № 7  
Ответить с цитированием
RJ Presto

Регистрация: Nov 2007
Сообщений: 55
Цитата:
Сообщение от wvxvw Посмотреть сообщение
И теперь создаем объект:
Код AS3:
var o:Object = { };
o.o = o;
и привет objectToXML()
быстренько набросал, сделать такой тест не догадался
но по большому счёту, это не очень-то реалистичная ситуация

да и предполагается, что на вход придёт объект из JSON.decode - там такая ситуация невозможна

Код AS3:
function isSimpleType(obj:Object):Boolean
{
	return (obj is String) ||
		(obj is int) ||
		(obj is uint) ||
		(obj is Number) ||
		(obj is Boolean);
}
 
function objectToXML(sourceObject:Object, rootNode:String = "root"):XML
{
	var result:XML = <{rootNode}></{rootNode}>
 
	for (var field:String in sourceObject)
	{
		var value:* = sourceObject[field];
 
		if (sourceObject is Array)
		{
			field = rootNode;
		}
 
		var node:XML;
		if (isSimpleType(value))
		{
			node = <{field}>{value}</{field}>;
			result.appendChild(node);
		}
		else
		{
			node = objectToXML(value, field);
 
			if (value is Array)
			{
				for each (var child:XML in node.children())
				{
					result.appendChild(child);
				}
			}
			else
			{
				result.appendChild(node);
			}
		}
	}
 
	return result;
}
такой код будет генерить валидный XML, но есть проблема с вложеными массивами - они раскрываются в один родительский


Последний раз редактировалось RJ Presto; 24.05.2012 в 20:49.