| Autor |
Mesaj |
wap-klub
Junior 2

Data inscrierii: 12/Noi/2010 Mesaje: 34
|
|
XML 2 |
|
O sa vorbim despre XML pt ca este nespus 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 primul 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 elemente !
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 debutantul cd ,in cazul folosirii "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 momentul 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 partea 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 moment 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 altera 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 utilizării stringurilor in flash(pt ca in mod natural 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 întâiul frame !
mai este trebuință de un frame(2) t a putea ca acolo sa folosim xml-ul incarcat !
Este necesitate 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 |
|
 |
|
|
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
|
|
|