luni, 3 noiembrie 2008

Cum sa lucrezi cu XML folosind E4X in Actionscript 3.0

Introducere

E4X reprezinta o serie de clase si functionalitati destinate manipularii XML. Este foarte asemanatoare din punct de vedere structural cu XPath.

Pentru declaratie XML se va folosi:

var myXML:xml=< grupa >
< studenti >
< student id=”1212” >
< nume > Popescu < /nume >
< prenume > Mihai < /prenume >
< /student >
< student id=”1313” >
< nume > Ionescu < /nume >
< prenume > Adrian < /prenume >
< /student >
< /studenti >
< /grupa >

Bineinteles acesta nu reprezinta o mare simplificare insa adevarata functionalitate apare in momentul in care dorim sa filtram informatii dintr-un xml.

Pentru a accesa un nod al xml-ului se va folosi calea din arbore separand numele nodurilor prin ‘.’ . Se va intoarce lista de noduri asociata caii(un XMLList);

Sa presupunem ca avem de referit nodul grupa->studenti. Vom folosi ‘myXML.studenti’ pentru a-l referi. Nodul radacina nu este referit prin numele XML-ului(in cazul de fata nodul grupa este referit prin myXML).

Exemplu:

var myStudent:XMLList=myXML.studenti;

Pentru a selecta ca un XML si nu ca o lista folosim:

var myStudent:XMLList=myXML.studenti[0];

Atribute

Pentru a selecta un atribut al unui XML se foloseste operatorul @ sub forma @< nume >.

Exemplu:

var myId:String=myXML.studenti.student[1].@id //va returna id-ul celui de-al doilea student.

Intotdeauna atributele returnate vor fi stringuri. Conversiile se fac ulterior.

Filtrare

Uneori este necesar sa selectam un numar de noduri cu anumite proprietati.

Pentru aceasta se foloseste notatia () in cadrul caii.

Exemplu:

var numeStud:XMLList=myXML.student.student.(@id==”1212”)[0].nume;

Aceasta imi returneaza numele studentului cu id-ul “1212”. Se observa ca am folosit [0] dupa conditie. Motivul este ca dupa conditie va rezulta o lista de noduri care indeplinesc conditia(chiar daca lista e formata dintr-un singur nod). Rezultate pot fi referite printr-un indice. [idx] reprezinta al idx-lea nod dintr-un XMLList.

Operatorul appendChild()

Se foloseste pentru a adauga un nod la finalul unui XML.

Exemplu:

var newStud=< student id=”1414” >
< nume > Dascalu < /nume >
< prenume > Ion < /prenume >
< /student >

myXML.studenti[0].appendChild(newStud);

Atributele ce pot fi referite prin filtrare pot fi si modificate.

Exemplu:

newStud.nume[0]=”Dobrescu”;//va modifica Dascalu in Dobrescu

Niciun comentariu: