Understanding XML: An Introduction to Extended Markup Language
Learn about XML, its importance in data markup, and how to define custom tags for applications. Explore XML structure, creation, navigation, and object definition in Flash.
Understanding XML: An Introduction to Extended Markup Language
E N D
Presentation Transcript
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 ?