+ All Categories
Home > Documents > AS3: XML Cosmin Varlan Cosmin Vârlan flash/prezentari_cerc 1.

AS3: XML Cosmin Varlan Cosmin Vârlan flash/prezentari_cerc 1.

Date post: 19-Dec-2015
Category:
View: 241 times
Download: 2 times
Share this document with a friend
26
AS3: XML Cosmin Varlan Cosmin Vârlan http://www.infoiasi.ro/~flash/ prezentari_cerc 1
Transcript

1

AS3: XML

Cosmin Varlan

Cosmin Vârlan

http://www.infoiasi.ro/~flash/prezentari_cerc

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

http://www.infoiasi.ro/~flash/prezentari_cerc

26

Cum transmitem din AS3 ?

Cosmin Vârlan


Recommended