С учетом следующего xml:
<form>
<personalDetails>
<name>John</name>
</personalDetails>
<financeDetails>
<income>
<salary>1000000</salary>
</income>
</financeDetails>
</form>
Я знаю, что можно создать вышеуказанный xml следующим образом (что очень круто):
var xml:XML = <form />;
xml.personalDetails.name = "John";
xml.financeDetails.income.salary = 1000000;
Однако, что если мы не знаем имен узлов или сколько уровней существует? Мы можем сделать это, используя метод, приведенный ниже, но на самом деле кажется, что должен быть более простой и лучший способ сделать это:
var xml:XML = <form />;
updateXml(xml, "personalDetails.name", "John");
updateXml(xml, "financeDetails.income.salary", "1000000");
function updateXml(xml:XML, path:String, data:String):void {
var nodesArray:Array = path.split(".");
switch (nodesArray.length) {
case 1:
xml[nodesArray[0]] = data;
break;
case 2:
xml[nodesArray[0]][nodesArray[1]] = data;
break;
case 3:
xml[nodesArray[0]][nodesArray[1]][nodesArray[2]] = data;
break;
}
}