Цитата:
Сообщение от 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, но есть проблема с вложеными массивами - они раскрываются в один родительский