Pagina de start a forumului castiga bani din jocuri
Inregistrare • Cautare • FAQ • Membri • Grupuri • Autentificare
XML 2

 
Raspunde la subiect    Pagina de start a forumului castiga bani din jocuri » Tutorial XML Subiectul anterior
Subiectul urmator
XML 2
Autor Mesaj
wap-klub
Junior 2
Junior 2


Data inscrierii: 12/Noi/2010
Mesaje: 34

Mesaj XML 2 Raspunde cu citat (quote)
O sa vorbim despre XML pt ca este extraordinar de important in lucrul

CODE
Cd-uri----

|----Muzica---

| |-Aqua

| |-Antiloop

|

|----Programe---

| |-Web--

| | |-Flash

| |-Audio--

| | |-Sound Forge
Hai sa vedem cum ar arata aceasta structura in formatul XML:
CODE
<cduri>

<muzica>

<aqua/>

<antiloop/>

</muzica>

<programe>

<web>

<Flash/>

</web>

<audio>

<Sound Forge/>

</audio>

</programe>

</cduri>
Cum vi se pare ?
Da ! Seamana cu html !Apare diferenta ca tagurile nu sunt restabilite !
Hai sa vedem inca o abordare XML:
CODE
<cduri>

<muzica>

<cd nume="Fastlane people" artist="antiloop"/>

<cd nume="Aquarium" artist="aqua"/>

</muzica>

<cduri>
Cum accesam datele ?
cduri este inițialul nod din structura.
El poate fi accesat prin xml.childNodes[0] sau prin xml.firstChild.
De ex ,daca am avea variabila xml cu numele "xml" ce ar cuprinde structura de mai sus si am da comanda trace(xml.firstChild)
Am primi ca rezultat:
CODE
<muzica>

<cd nume="Fastlane people" artist="antiloop"/>

<cd nume="Aquarium" artist="aqua"/>

</muzica>
,adica tot ce este cuprins intre tagurile primului nod(<cduri> si </cduri>).
Daca am vrea sa accesam cd-ul cu antiloop,am face asa:
xml.firstChild.firstChild.firstChild
Cum aflam numele cd-ului aflat pe pozitia de mai sus ?
Ati vazut ca numele cd-urilor si artisitii sunt prezeti intr-o formulare de genul:
cd nume="Fastlane people" artist="antiloop"/>
Nume,artist se numesc atribute !
Ele se acceseaza in felul urmator.
Daca am vrea sa accesam numele cd-ului cu antiloop(a primului di nstructura principala), folosim sintaxa:
xml.firstChild.firstChild.firstChild.attributes.nume
Deci daca folosim trace(xml.firstChild.firstChild.firstChild.attributes.nume), ne va fi afisat:"Fastlane People".Fara ghilimelele.
In cazul in care am vrea sa accesam numele celuilalt cd,folosim:
trace(xml.firstChild.firstChild.childNodes[1].attributes.nume)
Pt primul cd ,in cazul întrebuințării "childNodes" si nu "firstChild", am fi folosit:
trace(xml.firstChild.firstChild.childNodes[0].attributes.nume)
Deci, reiau:childNodes[0] este echivalent cu firstChild.
In cazul de fata, al 2-lea cd, este si ultimul, fapt pt care NUMAI in cazul de fata:
childNodes[1]=lastChild
lastChild, dupa cum probabil v-ati dat seama, acceseaza ultimul nod din nodul curent.
Al 2-lea cd ar putea fi accesat prin:
xml.firstChild.firstChild.lastChild
Cam asta ar fi despre atribute.
O sa va mai spun despre nodurile text, insa pana atunci sa mai discutam niste treburi.
Am fi putut sa nu mai folosim atributul artist si totusi sa stocam cumva si artistul cd-ului.
L-am fi stocat chair in numele nodurilor.
In timpul de fata avem:
<cd nume="Fastlane people" artist="antiloop"/>
Am fi putut folosi:
<antiloop nume="Fastlane people"/>
Si am fi aflat numele artistului prin :
xml.firstChild.firstChild.firstChild.nodeName
Inca un lucru:
<antiloop nume="Fastlane people"/> este echivalent cu:
<antiloop nume="Fastlane People"></antiloop>

Cam atat pt moment...
O sa urmeze nodurile text SI UN TEST (SA VEDETI DACA ATI INTELES) FACUT DE MINE IN FLASH !
Si sa nu uit:Va voi spune si cum sa folositi xml-urile in flash.Cu exemple practice..


Sa incepem cu nodurile text.
Dupa cum ati vazut, am întrebuințat atributele(<nod atribut="valoare"/>).
Acestea sunt bune si nu sunt bune....
Au dezavantaje !
De exemplu, nu poti sa bagi prea mult text !
Acest lucuru nu se mai intampla cu nodurile text.
Sa va dau un exemplu:

<text>Iata componentă 2-a !

Sa incepem cu nodurile text.
Dupa cum ati vazut, am folosit atributele
</text>

Continutul poate fi accesat prin:
xml.firstChild.firstChild.nodeValue
xml este numele variabilei xml.
xml.firstChild este nodul <text>
xml.firstChild.firstChild ar fi nodul text ,insa acesta nu are nume.Fapt pt care xml.firstChild.firstChild.nodeName nu se poate folosi...
:anunt: O sa se puna la un clipă dat problema integrarii de html in atribute/noduri text !
O varianta este oferite de xml ,dar eu o gasesc greoaie ,fapt pt care recomand urmatorul procedeu:
In loc sa folositi "<>" pt a deschide/inchide un tag, folositi "[]" !
Nu ! Nu osa le recunoasca flashul !
Dar am facut eu o functie care schimba toate "[]" dintr-un text in "<>"
si atunci nu mai e nici o problema !
Iata codul:

String.prototype.re=function(find,replace) {
var string=this
var counter
while (counter<string.length) {
var start = string.indexOf(find, counter);
if (start == -1) {
break;
} else {
var before=string.substr(0,start)
var after=string.substr(start+find.length,string.length)
string=before+replace+after
var counter=before.length+replace.length

}
}
return string;
}
String.prototype.convert=function(){
a=this
a=a.re("[","<")a=a.re("]",">")
return a
}


Adaugati codul de mai sus la inceputul fisierului din flash(pe primul frame).
O sa revin asupra folosirii stringurilor in flash(pt ca in mod normal acest lucru este foarte lent)
Cu acest cod introdus, in loc de
xml.firstChild.firstChild.nodeValue
veti folosi
xml.firstChild.firstChild.nodeValue.convert()
Asa veti avea html in flash !
Pt nelamuriri in privinta functilor prototype,postati mai jos !
Gata ! Asta e si cu nodurile text !

Cum sa incarcam un xml in flash...
In primul rand trebuie folosit xmlNitro
Apoi:

obiect=new XML() //declararea
obiect.ignoreWhite=true //aceasta comanda face ca liniile(BR-uurile) sa nu fie interpretate ca noduri.Foarte important
obiect.onLoad()=func //executare func la incarcare
obiect.load("fisier.xml")
function func(){ //asta este functia...
_root.play()} //next frame la incarcare xml
stop()

codul de mai sus este pt primul frame !
mai este necesitate de un frame(2) t a putea ca acolo sa folosim xml-ul incarcat !
Este nevoie de aceste doua frame-uri pt a evita incercarea manipularii unui xml pana ca acesta sa se fi incarcat.
pt frame-ul 2:

trace(obiect)
stop()
12/11/2010 18:38 Vezi profilul utilizatorului Trimite mesaj privat
Afiseaza mesajele pentru a le previzualiza:    
Raspunde la subiect    Pagina de start a forumului castiga bani din jocuri » Tutorial XML Ora este GMT + 2 ore
Pagina 1 din 1

 
Mergi direct la: 
Nu puteti crea un subiect nou in acest forum
Nu puteti raspunde in subiectele acestui forum
Nu puteti modifica mesajele proprii din acest forum
Nu puteti sterge mesajele proprii din acest forum
Nu puteti vota in chestionarele din acest forum


Powered by phpBB © 2001, 2005 phpBB Group
Design by Freestyle XL / Flowers Online.Fa-ti si tu propriul forum GRATUIT, pe www.myforum.ro