Curs Flash

Pe langa posibilitatea de a crea, incarca si accesa date XML, E4X are si functii de editare, modificare si stergere a lor in ActionScript.
Pentru aceste operatii de editare pot fi utilizate /combinate doua variante: cu operatorul plus (.) si cu metode din clasele XML, XMLList.

1. Modificare elemente si atribute

Modificarea valorii unui element sau atribut se face cel mai usor cu operatorul plus (.), cand se cunoaste bine structura continutului XML.
Se acceseaza elementul /atributul respectiv si cu egal (=) i-se atribue valoarea dorita. Dupa cum e prezentat in urmatorul exemplu.

// Instanta in care e stocat continutul XML complet
var marplo:XML = <site>
    <cursuri>
      <curs id="1" title="PHP-MySQL">marplo.net/php-mysql/</curs>
      <curs id="2" title="JavaScript">marplo.net/javascript/</curs>
      <curs id="3" title="Flash ActionScript">marplo.net/flash/</curs>
    </cursuri>
  </site>;

// Se modifica valoarea din al doilea tag <curs> (din <cursuri>)
marplo.cursuri.curs[1] = 'marplo.net/engleza/';

// Modificare atribut "title" din al doilea tag <curs>
marplo.cursuri.curs[1].@title = 'Limba Engleza';

// Se verifica daca datele au fost schimbate
trace(marplo);

/* Va afisa:
  <site>
    <cursuri>
      <curs id="1" title="PHP-MySQL">marplo.net/php-mysql/</curs>
      <curs id="2" title="Limba Engleza">marplo.net/engleza/</curs>
      <curs id="3" title="Flash ActionScript">marplo.net/flash/</curs>
    </cursuri>
  </site>
*/
- Se observa din comentariu de sub "trace()" (pt. a arata rezultatul afisat) ca datele XML au fost modificate, mai exact, la al doilea tag <curs>.

• Iata aceleasi schimbari facute cu metode (explicatiile sunt in cod):
// Instanta in care e stocat continutul XML complet
var marplo:XML = <site>
    <cursuri>
      <curs id="1" title="PHP-MySQL">marplo.net/php-mysql/</curs>
      <curs id="2" title="JavaScript">marplo.net/javascript/</curs>
      <curs id="3" title="Flash ActionScript">marplo.net/flash/</curs>
    </cursuri>
  </site>;

// Adauga intr-o variabila XMLList obiectul la care se fac modificari
  // tag-urile "curs" din primul copil al tag-ului radacina
// Nu e obligatoriu, dar e mai usor cand se lucreaza de mai multe ori cu acelasi element
var curss:XMLList = marplo.children()[0].child('curs');

// Modifica valoarea din al doilea element stocat in variabila "curss"
curss[1] = 'marplo.net/engleza/';

// Schimba valoarea atributului 'title' din al doilea element stocat in variabila "curss"
curss[1].attribute("title")[0] = 'Limba Engleza';

// Se verifica daca datele au fost schimbate
trace(marplo);
- Va afisa in Output acelasi rezultat ca primul exemplu.

Nici una din variante nu este stricta, depinde cat de bine se cunoaste continutul si ierarhia datelor XML precum si contextul in care sunt facute modificarile.
Pot fi si combinate, de ex.:     marplo.*.child('curs')[1].@title = 'Limba Engleza';

2. Adaugare tag-uri si atribute noi

Cand trebuie adagate tag-uri noi intr-un obiect XML se folosesc de obicei metode (sau in combinatie cu operatorul (.)), deoarece ofera un control mai bun asupra locului unde sa fie adaugat (inainte sau dupa alte tag-uri din acel obiect).
Pentru atribute, daca nu conteaza ordinea lor in tag, se adauga folosind mai mult varianta cu operatorul punct (.) si caracterul '@'.


In exemplu urmator se adauga un nou tag <curs> in <cursuri>, la inceput, inaintea celor deja existente (cu metoda "prependChild()"). Apoi, cu o instructiune "for()" se parcurg aceste tag-uri si la fiecare adauga un atribut "nr" (explicatiile sunt in cod).
// Instanta in care e stocat continutul XML complet
var marplo:XML = <site>
    <cursuri>
      <curs id="1" title="PHP-MySQL">marplo.net/php-mysql/</curs>
      <curs id="2" title="JavaScript">marplo.net/javascript/</curs>
      <curs id="3" title="Flash ActionScript">marplo.net/flash/</curs>
    </cursuri>
  </site>;

// Se creaza o variabila (tip XML) cu datele pt. un nou element "curs", apoi o adauga in <cursuri>
var new_curs:XML = <curs id="0" title="HTML">marplo.net/html/</curs>;
marplo.cursuri[0].prependChild(new_curs);

// Adauga intr-o variabila XMLList elementul cu tag-urile <curs>
var curss:XMLList = marplo.cursuri[0].curs;

// Parcurge "curss" pana la ultimul element (aflat prin "curss.length()")
for(var i:int=0; i<curss.length(); i++)
{
  // Adauga la fiecare un atribut "nr" cu valoarea curenta a lui i
  curss[i].@nr = i;
}

trace(marplo);
- In Output va afisa urmatorul continut XML. Se observa noul tag <curs> (primul) si atributul "nr" la fiecare.
<site>
    <cursuri>
        <curs id="0" title="HTML" nr="0">marplo.net/html/</curs>
        <curs id="1" title="PHP-MySQL" nr="1">marplo.net/php-mysql/</curs>
        <curs id="2" title="JavaScript" nr="2">marplo.net/javascript/</curs>
        <curs id="3" title="Flash ActionScript" nr="3">marplo.net/flash/</curs>
    </cursuri>
</site>

• Metodele clasei XML folosite pt. a adauga elemente noi sunt:

3. Stergere elemente si atribute

Pentru a sterge elemente si atribute din XML se foloseste operatorul delete, cu sintaxa:
                delete ObiectXML.element_sau_atribut
De exemplu:
      delete xmlObj.elm[0];         // Sterge primul tag <elm> din radacina
      delete xmlObj.elm[0].tag[1];         // Sterge al doilea <tag> din primul <elm> din radacina
      delete xmlObj.elm[0].@atr;         // Sterge atributul "atr" din primul tag <elm> din radacina
      delete xmlObj.elm.tag.@atr;         // Sterge atributul "atr" din toate elementele <tag> incluse in fiecare <elm> din radacina
      delete xmlObj.*;         // Sterge toate elementele
      delete xmlObj.*.tag.@*;         // Sterge toate atributele din fiecare element <tag>


In exemplu urmator se sterge ultimul tag <curs> si atributul "id" din toate elementele "curs".
// Instanta in care e stocat continutul XML complet
var marplo:XML = <site>
    <cursuri>
      <curs id="1" title="PHP-MySQL">marplo.net/php-mysql/</curs>
      <curs id="2" title="JavaScript">marplo.net/javascript/</curs>
      <curs id="3" title="Flash ActionScript">marplo.net/flash/</curs>
    </cursuri>
  </site>;

// Preia nr. elemente <curs> din <cursuri> (ca sa poata fi cunoscut indexul pt. ultimu)
var nr_c:* = marplo.cursuri[0].curs.length();

// Sterge ultimul tag <curs> (indexul lui fiind [nr_c-1])
delete marplo.cursuri.curs[nr_c-1];

// Sterge atributul "id" din toate elementele <curs>
delete marplo.cursuri.curs.@id;

trace(marplo);
- Dupa ce sunt aplicate instructiunile de stergere (delete), continutul XML ramas si afisat este:
<site>
    <cursuri>
        <curs title="PHP-MySQL">marplo.net/php-mysql/</curs>
        <curs title="JavaScript">marplo.net/javascript/</curs>
    </cursuri>
</site>

• Operatiile de editare pot fi combinate si cu instructiuni de filtrare.
De exemplu:
            delete marplo.cursuri.curs.(hasOwnProperty('@id') && @id==2).*;
- Sterge continutul din elementul "curs" care are atributul id="2".
Iar urmatoarea instructiune:
            marplo.*.curs.(hasOwnProperty('@id') && @id==2).setChildren(<alttag>Text</alttag>);
- Inlocuieste continutul din elementul "curs" care are atributul id="2" cu "<alttag>Text</alttag>".

• Pentru a transforma datele dintr-un obiect XML in sir (String) se foloseste metoda toXMLString(), dupa formula:
                ObiectXML.toXMLString()
- Aceasta metoda permite utilizarea continutului XML ca un sir.

• Pentru a transforma un sir cu date XML intr-un obiect XML-E4X, se adauga sirul la o instanta tip XML, dupa formula:
                var ObiectXML:XML = new XML(sirDateXML);

• Continutul XML editat in ActionScript poate fi salvat pe server prin transferul lui la adresa unui script de prelucrare date pe server (cum e PHP), folosind metoda load(). Gasiti un tutorial despre transferul de date XML din ActionScript la PHP, la pagina Trimitere date XML din ActionScript la server PHP

Fisierul FLA cu exemplele din aceasta lectie poate fi descarcat de la: XML - E4X - editare.

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Ce tag se foloseste pentru a adauga liste in elemente <ul> si <ol>?
<dt> <dd> <li>
<ul>
 <li>http://coursesweb.net/html/</li>
 <li>http://www.marplo.net/html/</li>
</ul>
Care valoare a proprietatii "display" seteaza elementul ca tip bloc si afiseaza un punct in fata?
block list-item inline-block
.some_class {
  display: list-item;
}
Care instructiune JavaScript transforma un obiect in sir JSON.
JSON.parse() JSON.stringify eval()
var obj = {
 "courses": ["php", "javascript", "ajax"]
};
var jsonstr = JSON.stringify(obj);
alert(jsonstr);    // {"courses":["php","javascript","ajax"]}
Indicati clasa PHP folosita pentru a lucra cu elemente HTML si XML in PHP.
stdClass PDO DOMDocument
$strhtml = '<body><div id="dv1">CoursesWeb.net</div></body>';
$dochtml = new DOMDocument();
$dochtml->loadHTML($strhtml);
$elm = $dochtml->getElementById("dv1");
echo $elm->nodeValue;    // CoursesWeb.net
Indicati forma de Prezent Continuu a verbului "to live" (a trai /a locui)
lived living liveing
I`m living here.
- Traiesc /Locuiesc aici.
Care este forma de Gerunziu (sau Participiu Prezent) a verbului "vivir" (a trai /a locui)?
viviĆ³ vivido viviendo
Estoy viviendo aquĆ­.
- Traiesc /Locuiesc aici.
Editare, Modificare XML - E4X

Last accessed pages

  1. Coduri pt culori (68991)
  2. Tener que Hay que (2093)
  3. Lucru cu XML - modelul DOM (699)
  4. Cautare in tabel MySQL (1376)
  5. Exemple de conversatii in limba engleza (4947)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (961)
  2. Gramatica limbii engleze - Prezentare Generala (624)
  3. Exercitii engleza - English Tests and exercises - Grammar (558)
  4. Prezentul simplu si continuu - Present Tense Simple and Continuous (454)
  5. Coduri pt culori (365)