AS3: XML Cosmin Varlan Cosmin Vârlan flash/prezentari_cerc 1.
-
date post
19-Dec-2015 -
Category
Documents
-
view
242 -
download
2
Transcript of AS3: XML Cosmin Varlan Cosmin Vârlan flash/prezentari_cerc 1.
http://www.infoiasi.ro/~flash/prezentari_cerc
2
XML
• 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
Ce ar fi daca acesti marcatori ar exprima si alte chestiuni decat formatari ale textului ?
Cosmin Vârlan
http://www.infoiasi.ro/~flash/prezentari_cerc
3
XML
• XML permite definirea propriilor marcatori care au inteles pentru aplicatiile ce stiu sa le foloseasca.
• De exemplu, am putea scrie marcajele:<prieten> …. </prieten>Dar prietenul are un nume. Atunci in interiorul
marcatorului prieten vom avea un marcator “nume” sau date de contact, zi de nastere etc:
Cosmin Vârlan
http://www.infoiasi.ro/~flash/prezentari_cerc
4
XML
<prieten> <prenume>Gigi</prenume> <nume>Becali</nume> <telefon>0745.123123</telefon> <email>[email protected]</email> <nascut> <zi>1</zi> <luna>04</luna> <an>1907</an> </nascut></prieten>
Cosmin Vârlan
http://www.infoiasi.ro/~flash/prezentari_cerc
5
XML Nu avem numai un prieten:<agenda> <prieten> ………………………. </prieten> <prieten> ………………………. </prieten> <prieten> ………………………. </prieten></agenda>
Cosmin Vârlan
http://www.infoiasi.ro/~flash/prezentari_cerc
6
XML
In plus un XML trebuie sa aiba un antet care sa dea cateva informatii despre XML: Versiunea, felul encodingului:
<?xml version=“1.0” encoding=“UTF-8”?><agenda> <prieten> ……………………….
Cosmin Vârlan
http://www.infoiasi.ro/~flash/prezentari_cerc
7
XML
• Sa construim un XML cu toate persoanele prezente :D
Cosmin Vârlan
http://www.infoiasi.ro/~flash/prezentari_cerc
8
XML
• Definirea unui obiect XML in Flash:var agenda:XML = new XML();
Sau:
var agenda : XML = new XML("<agenda><prieten><nume>Varlan </nume><prenume>Nicolae</prenume>
<prenume>Cosmin</prenume> </prieten></agenda>" );Cosmin Vârlan
http://www.infoiasi.ro/~flash/prezentari_cerc
9
XML – sau chiar
var agenda: 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>
Cosmin Vârlan
http://www.infoiasi.ro/~flash/prezentari_cerc
10
XML
• Pentru a afisa continutul unui obiect XML:trace( agenda.toString() );trace( agenda.toXMLString() );
Cosmin Vârlan
http://www.infoiasi.ro/~flash/prezentari_cerc
11
XML
• XML – ul are o structura arborescenta, o singura radacina (agenda) si un numar de copii (prieten) care la randul lor pot avea alti copii (nume, prenume etc.)
• Reprezentarea in memoria calculatorului este realizata tot arborescent, arborele respectiv numindu-se arbore DOM (Document Object Model)
Cosmin Vârlan
http://www.infoiasi.ro/~flash/prezentari_cerc
12
XML
• Una din metodele de navigarea in XML este prin utilizarea comenzii “child”.
• Metoda child are ca parametru numele copilului ce trebuie cautat. Ceea ce se returneaza este de fapt o lista (xmlList) continand toti copii cu numele dat ca parametru:
• Lungimea listei: trace( agenda.child( "prieten" ).length );
Cosmin Vârlan
http://www.infoiasi.ro/~flash/prezentari_cerc
13
XML
• Una din metodele de navigarea in XML este prin utilizarea comenzii “child”.
• Metoda child are ca parametru numele copilului ce trebuie cautat. Ceea ce se returneaza este de fapt o lista (xmlList) continand toti copii cu numele dat ca parametru:
• Lungimea listei: trace( agenda.child( "prieten" ).length );
Cosmin Vârlan
http://www.infoiasi.ro/~flash/prezentari_cerc
14
XML
• Putem accesa un copil indicand intre paranteze patrate indexul copilului cautat.
• Copilul este la randul sau un obiect XML (si xmlList-ul este un Array de XML-uri):
var temp : XML = agenda.child("prieten”)[0].child( "nume“ )[0];
Cosmin Vârlan
http://www.infoiasi.ro/~flash/prezentari_cerc
15
XML
• Pentru a accesa componenta textuala vom utiliza .text() pentru nodul ce contine text:
temp.text();
Cosmin Vârlan
http://www.infoiasi.ro/~flash/prezentari_cerc
16
XML
• A doua metoda de construire a listei este utilizand metoda children(). Aceasta nu are nici un parametru si returneaza toti copii nodului apelant:
var listaPrieteni : XMLList = agenda.children(); trace( listaPrieteni[0] );
Cosmin Vârlan
http://www.infoiasi.ro/~flash/prezentari_cerc
17
XML
• Pentru inserarea unui nod se va folosi metoda appendChild(); (pe utlima pozitie)
appendChild are ca parametru un obiect de tip XML (sau un XMLList) ce va fi adaugat nodului selectat.
agenda.appendChild( prietenNou );
Cosmin Vârlan
http://www.infoiasi.ro/~flash/prezentari_cerc
18
XML
• Pentru a insera copilul intr-o anumita pozitie se va utiliza insertChildAfter():
agenda.insertChildAfter(agenda.children()[0], prietenNou);
(sau insertChildBefore - la fel)
Cosmin Vârlan
http://www.infoiasi.ro/~flash/prezentari_cerc
19
XML
• Un nod poate avea unul sau mai multe atribute: valori suplimentare ce pot fi atasate marcatorului. De exemplu:
• <prieten sex=“m”> …. </prieten>• Pentru a afla atributele unui nod vom apela
metoda atributes pentru acel nod ce va returna un xmlList cu toate atributele:
trace( agenda.children()[0].attributes() );
Cosmin Vârlan
http://www.infoiasi.ro/~flash/prezentari_cerc
20
XML
• Un nod poate avea unul sau mai multe atribute: valori suplimentare ce pot fi atasate marcatorului. De exemplu:
• <prieten sex=“m”> …. </prieten>• Pentru a afla atributele unui nod vom apela metoda
atributes pentru acel nod ce va returna un xmlList cu toate atributele sau utiliza “@”:
trace( agenda.children()[0].attributes() );
trace( agenda.children()[0].attribute("sex") ); // mtrace( agenda.children()[0].@sex ); Cosmin Vârlan
http://www.infoiasi.ro/~flash/prezentari_cerc
21
XML
• Adaugarea atributelor se face prin atribuire:
agenda.children()[0].@ani = 30;
XML-ul poate fi incarcat si dintr-un fisier extern:Cosmin Vârlan
http://www.infoiasi.ro/~flash/prezentari_cerc
22
GuestBook ?!
• Datele vor fi salvate intr-un fisier ca o padure de XML – uri (este cea mai simpla abordare, desi nu cea mai corecta din punctul de vedere al filosofiei XML).
• Vom invata sa trimitem date catre PHP, sa salvam aceste date intr-un format apropiat XML-ului, sa preluam aceste date de pe server ca un XML si sa afisam mesajele.
Cosmin Vârlan
http://www.infoiasi.ro/~flash/prezentari_cerc
23
Fisier - padure de XML (mesaje.txt):
<mesaj nume="mira" email="" mesaj="imi placeeeee..." ip="89.35.93.205" />
<mesaj nume=“yoy" email="" mesaj=“un mesaj" ip=“19.25.122.225" />
……………………
Cosmin Vârlan
http://www.infoiasi.ro/~flash/prezentari_cerc
24
Fisier PHP (mesaje.php):
<?php echo "<?xml version=\"1.0\" ?>"; echo "<mesaje>"; include "mesaje.txt"; echo"</mesaje>";?>
Cosmin Vârlan
http://www.infoiasi.ro/~flash/prezentari_cerc
25
Fisier PHP (adauga_mesaj.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";?>
Cosmin Vârlan