260 likes | 343 Views
AS3 : XML. Cosmin Varlan. eXtended Markup Language Si chiar este un limbaj de marcare a datelor - vom face o mica analogie cu HTML- ul : Marcatorul <b> … </b> face textul ingrosat Marcatorul <table>… </table> face un tabel
E N D
http://www.infoiasi.ro/~flash/prezentari_cerc AS3: XML CosminVarlan
eXtended Markup Language Si chiareste un limbaj de marcare a datelor - vom face o mica analogie cu HTML-ul: Marcatorul <b> … </b> face textulingrosat Marcatorul <table>… </table> face un tabel Cearfidacaacestimarcatoriarexprimasialtechestiunidecatformatari ale textului ? http://www.infoiasi.ro/~flash/prezentari_cerc XML
XML permitedefinireapropriilormarcatori care au intelespentruaplicatiilecestiusa le foloseasca. De exemplu, am puteascriemarcajele: <prieten> …. </prieten> Dar prietenul are un nume. Atunci in interiorulmarcatoruluiprietenvomavea un marcator “nume” sau date de contact, zi de nastere etc: http://www.infoiasi.ro/~flash/prezentari_cerc XML
<prieten> <prenume>Gigi</prenume> <nume>Becali</nume> <telefon>0745.123123</telefon> <email>becali@yahoo.com</email> <nascut> <zi>1</zi> <luna>04</luna> <an>1907</an> </nascut> </prieten> http://www.infoiasi.ro/~flash/prezentari_cerc XML
Nu avemnumai un prieten: <agenda> <prieten> ………………………. </prieten> <prieten> ………………………. </prieten> <prieten> ………………………. </prieten> </agenda> http://www.infoiasi.ro/~flash/prezentari_cerc XML
In plus un XML trebuiesaaiba un antet care sadeacatevainformatiidespre XML: Versiunea, felulencodingului: <?xml version=“1.0” encoding=“UTF-8”?> <agenda> <prieten> ………………………. http://www.infoiasi.ro/~flash/prezentari_cerc XML
Sa construim un XML cu toatepersoaneleprezente :D http://www.infoiasi.ro/~flash/prezentari_cerc XML
Definireaunuiobiect XML in Flash: varagenda:XML = new XML(); Sau: var agenda : XML = new XML("<agenda><prieten><nume>Varlan </nume><prenume>Nicolae</prenume> <prenume>Cosmin</prenume> </prieten></agenda>" ); http://www.infoiasi.ro/~flash/prezentari_cerc XML
varagenda: XML = <agenda><prieten sex="m"> <nume>Vârlan</nume> <prenume>Nicolae</prenume> <prenume>Cosmin</prenume> <telefon>0744444470</telefon> <data_nastere> <zi>7</zi> <luna>7</luna> <an>1978</an> </data_nastere> </prieten> <prieten sex="f"> <nume>Vârlan</nume> <prenume>Elena</prenume> <prenume>Madalina</prenume> <telefon>0745555470</telefon> <data_nastere> <zi>31</zi> <luna>01</luna> <an>1982</an> </data_nastere> </prieten></agenda> http://www.infoiasi.ro/~flash/prezentari_cerc XML – sauchiar
Pentru a afisacontinutulunuiobiect XML: trace( agenda.toString() ); trace( agenda.toXMLString() ); http://www.infoiasi.ro/~flash/prezentari_cerc XML
XML – ul are o structuraarborescenta, o singuraradacina (agenda) si un numar de copii (prieten) care la randullor pot aveaalticopii (nume, prenume etc.) Reprezentarea in memoriacalculatoruluiesterealizata tot arborescent, arborelerespectivnumindu-se arbore DOM (Document Object Model) http://www.infoiasi.ro/~flash/prezentari_cerc XML
Una din metodele de navigarea in XML esteprinutilizareacomenzii “child”. Metoda child are ca parametrunumelecopiluluicetrebuiecautat. Ceeace se returneazaeste de fapt o lista (xmlList) continandtoticopii cu numeledat ca parametru: Lungimealistei: trace( agenda.child( "prieten" ).length ); http://www.infoiasi.ro/~flash/prezentari_cerc XML
Una din metodele de navigarea in XML esteprinutilizareacomenzii “child”. Metoda child are ca parametrunumelecopiluluicetrebuiecautat. Ceeace se returneazaeste de fapt o lista (xmlList) continandtoticopii cu numeledat ca parametru: Lungimealistei: trace( agenda.child( "prieten" ).length ); http://www.infoiasi.ro/~flash/prezentari_cerc XML
Putemaccesa un copilindicandintreparantezepatrateindexulcopiluluicautat. Copiluleste la randulsau un obiect XML (sixmlList-uleste un Array de XML-uri): var temp : XML = agenda.child("prieten”)[0].child( "nume“ )[0]; http://www.infoiasi.ro/~flash/prezentari_cerc XML
Pentru a accesacomponentatextualavomutiliza .text() pentrunodulcecontine text: temp.text(); http://www.infoiasi.ro/~flash/prezentari_cerc XML
A douametoda de construire a listeiesteutilizandmetoda children(). Aceasta nu are nici un parametrusireturneazatoticopiinoduluiapelant: varlistaPrieteni : XMLList = agenda.children(); trace( listaPrieteni[0] ); http://www.infoiasi.ro/~flash/prezentari_cerc XML
Pentruinserareaunui nod se vafolosimetoda appendChild(); (peutlimapozitie) appendChild are ca parametru un obiect de tip XML (sau un XMLList) cevafiadaugatnoduluiselectat. agenda.appendChild( prietenNou ); http://www.infoiasi.ro/~flash/prezentari_cerc XML
Pentru a inseracopilulintr-o anumitapozitie se vautilizainsertChildAfter(): agenda.insertChildAfter(agenda.children()[0], prietenNou); (sauinsertChildBefore- la fel) http://www.infoiasi.ro/~flash/prezentari_cerc XML
Un nod poateaveaunulsaumaimulteatribute: valorisuplimentarece pot fiatasatemarcatorului. De exemplu: <prieten sex=“m”> …. </prieten> Pentru a aflaatributeleunui nod vomapelametodaatributespentruacel nod cevareturna un xmlList cu toateatributele: trace( agenda.children()[0].attributes() ); http://www.infoiasi.ro/~flash/prezentari_cerc XML
Un nod poateaveaunulsaumaimulteatribute: valorisuplimentarece pot fiatasatemarcatorului. De exemplu: <prieten sex=“m”> …. </prieten> Pentru a aflaatributeleunui nod vomapelametodaatributespentruacel nod cevareturna un xmlList cu toateatributelesauutiliza “@”: trace( agenda.children()[0].attributes() ); trace( agenda.children()[0].attribute("sex") ); // m trace( agenda.children()[0].@sex ); http://www.infoiasi.ro/~flash/prezentari_cerc XML
Adaugareaatributelor se face prinatribuire: agenda.children()[0].@ani = 30; XML-ulpoatefiincarcatsidintr-un fisier extern: http://www.infoiasi.ro/~flash/prezentari_cerc XML
Datelevorfisalvateintr-un fisier ca o padure de XML – uri (esteceamaisimplaabordare, desi nu ceamaicorecta din punctul de vedere al filosofiei XML). Vominvatasatrimitem date catre PHP, sasalvamaceste date intr-un format apropiat XML-ului, sapreluamaceste date de pe server ca un XML sisaafisammesajele. http://www.infoiasi.ro/~flash/prezentari_cerc GuestBook ?!
<mesajnume="mira" email="" mesaj="imiplaceeeee..." ip="89.35.93.205" /> <mesajnume=“yoy" email="" mesaj=“un mesaj" ip=“19.25.122.225" /> ………… ………… http://www.infoiasi.ro/~flash/prezentari_cerc Fisier - padure de XML (mesaje.txt):
<?php echo "<?xml version=\"1.0\" ?>"; echo "<mesaje>"; include "mesaje.txt"; echo"</mesaje>"; ?> http://www.infoiasi.ro/~flash/prezentari_cerc Fisier PHP (mesaje.php):
<?php $a=$_POST['nume']; $b=$_POST['email']; $c=$_POST['mesaj']; $ip=getenv("REMOTE_ADDR"); if(!($fp = fopen("mesaje.txt", "a"))) die ("Cannot open mesaje.txt"); $a="<mesaj nume=\"".$a."\" email=\"".$b."\" mesaj=\"".$c."\" ip=\"".$ip."\" /> \n"; fwrite($fp, $a); fclose ($fp); echo "mesaj=ok"; ?> http://www.infoiasi.ro/~flash/prezentari_cerc Fisier PHP (adauga_mesaj.php):
http://www.infoiasi.ro/~flash/prezentari_cerc Cum transmitem din AS3 ?