Basicamente você pode fazer assim:
var nomeCampo:String;
var node:XML;
var myXML:XML = <usuarios></usuarios>;
nomeCampo = "usuario";
node = <{nomeCampo}/>;
myXML.appendChild(node);
nomeCampo = "endereco";
node = <{nomeCampo}/>;
myXML.appendChild(node);
/* Resultado:
<usuarios>
<usuario/>
<endereco/>
</usuarios>
*/
Um exemplo funcional um pouco mais avançado transforma uma lista de
objetos em XML:
<?xml version="1.0"?>
<mx:Application xmlns:mx="
http://www.adobe.com/2006/mxml"
initialize="initializeHandler(event)">
<mx:Script>
<![CDATA[
import mx.events.FlexEvent;
[Bindable]
private var myXML:XML;
private function initializeHandler(event:FlexEvent):void
{
var users:Array = [{name:"Beck Novaes",
email:"
beck....@gmail.com"},
{name:"Albert Einstein", email:"
eins...@gmail.com"},
{name:"Bill Gates", email:"
bill...@apple.com"},
{name:"Steve Jobs", email:"
jo...@microsoft.com"}];
myXML = createUsersXML(users);
trace(myXML);
}
/**
* Pega um objeto da lista no formato:
* {name:"Beck Novaes", email:"
beck....@gmail.com"}
*
* E retorna um XML do objeto no formato:
* <users>
* <user>
* <email>
*
beck....@gmail.com
* </email>
* <name>
* Beck Novaes
* </name>
* </user>
* </users>
*/
private function createUsersXML(users:Array):XML
{
var usersXML:XML = <users></users>;
for each (var user:Object in users)
{
var userNode:XML = <user></user>;
for (var property:String in user)
{
userNode.appendChild(<{property}>{user[property]}</{property}>);
}
usersXML.appendChild(userNode);
}
return usersXML;
}
]]>
</mx:Script>
</mx:Application>
O segredo é esquecer o que você conhecer de manipulação de XML nas
outras tecnologias. O ActionScript 3 tem um negócio chamado E4X -
Ecma for XML. E isto muda um pouco a maneira de trabalhar com XML no
Flex. De fato, temos algo muito mais poderoso que pouca gente tira
proveito. Saiba mais em:
http://livedocs.adobe.com/flex/3/html/help.html?content=13_Working_with_XML_01.html
[]'s
Beck Novaes