Después de algún cabezazo lo he conseguido, así que lo comparto por si a alguien le puede interesar
Partimos de un xml así:
Código XML :
<Cuadro>
<Elemento id="1" Nombre="IGA" Tipo="Magnetotermico" Cx="200" Cy="380" FasesPolos="3"/>
</Cuadro>
Sólo tiene un elemento, para facilitar la comprensión.
Como veréis, el xml sólo tiene atributos (prefiero usarlo así), y se trata de hacer un árbol con él
Si quiero insertar nodos, me fabrico una función para posicionarse en el nodo con id 1 (u otro id que tengamos, en este caso sólo tenemos ese), así:
Código ActionScript :
//Se posiciona en un nodo específico dado por su 'id'
function posicionarseEnUnNodoEspecifico(XmlExterno:XML,numNodo:uint) {
//XmlExterno es el Xml en el que vamos a buscar, cargado con un loader (que no explico aquí, hay suficiente material sobre eso en Cristalab).
//La variable nodo es un Xml que contendrá el nodo que encontremos
var nodo:XML=new XML;
//numNodo es el id del nodo en el que queremos posicionarnos
//Recorro TODOS los nodos, hasta encontrar el que busco, y me quedo ahí (si lo encuentro, hago break para salir).
for each(nodo in XmlExterno..Elemento){
//Es de observar los .. en lugar de ., para que busque en el árbol completo (en este caso tenemos 1 nodo, pero podría haber muchos, y de hecho los habrá).
if (Number(nodo.@id)==numNodo) {
break;
}
}
}
La variable nodo tiene ahora el valor de un Xml que comienza en el nodo con id=numNodo;
Es ahora cuando vamos a insertar:
Código ActionScript :
//1. Insertando elementos por encima del nodo 'nodo':
XmlExterno.insertChildBefore(nodo,"<Elemento id='1' Nombre='prova1' Tipo='Magnetotermico' Cx='200' Cy='380' FasesPolos='3'/>");Cx='200' Cy='380' FasesPolos='3'/>");
//2. Insertando elementos por debajo del nodo 'nodo':
XmlExterno.insertChildAfter(funcionesDeNodos.nodo,"<Elemento id='2' Nombre='prova2' Tipo='Fusible' Cx='200' Cy='380' FasesPolos='3'/>");
//3. Insertando nodos hijo dentro del nodo 'nodo':
nodo.appendChild("<Elemento id='3' Nombre='prova3' Tipo='Diferencial' Cx='200' Cy='380' FasesPolos='3'/>");
//Ojo con no poner " " sino ' ', en caso contrario dará errores
trace(XmlExterno);
El resultado es:
Código XML :
<Cuadro>
<Elemento id="1" Nombre="prova1" Tipo="Magnetotermico" Cx="200" Cy="380" FasesPolos="3"/>
<Elemento id="1" Nombre="IGA" Tipo="Magnetotermico" Cx="200" Cy="380" FasesPolos="3">
<Elemento id="3" Nombre="prova3" Tipo="Diferencial" Cx="200" Cy="380" FasesPolos="3"/>
</Elemento>
<Elemento id="2" Nombre="prova2" Tipo="Fusible" Cx="200" Cy="380" FasesPolos="3"/>
</Cuadro>
Que era lo que queríamos conseguir.
Saludos a todos.
Javier
TheMagoZero