Bazele XML
XML este standardul pentru marcare. Formatul bazat pe XML este utilizat pentru a descrie datele reprezentate de etichete care nu trebuie definite în prealabil. XML este foarte extensibil, deoarece puteți crea noi etichete după cum este necesar. Lista 1 prezintă un exemplu de structură de date reprezentată într-un format XML.
Listarea 1. Un exemplu simplu de date XML
Bazele JSON
Listing 2. Un exemplu simplu de date JSON
Prelucrarea datelor din partea browserului
Listarea 3. Fragment de cod pentru procesarea datelor în format JSON primit de la server
Conversia XML în JSON
Un număr din ce în ce mai mare de aplicații trebuie să convertească datele XML în JSON. Mai multe servicii Web care efectuează astfel de conversii au apărut deja. IBM T.J. Centrul de Cercetare Watson a dezvoltat o metodă specială care utilizează PHP pentru a efectua conversia. Această metodă preia datele XML la intrare și o convertește în format JSON la ieșire. Această soluție PHP oferă câteva avantaje:
- Acesta poate fi rulat în modul standalone, din linia de comandă.
- Acesta poate fi inclus în codul existent care rulează pe partea de server.
- Acesta poate fi ușor plasat ca un serviciu Web pe Web.
Conversia XML în JSON necesită utilizarea a două funcții de bază PHP:
Folosind numai aceste două funcții de bază PHP, puteți converti orice date XML arbitrare într-un format JSON. Mai întâi, trebuie să convertiți conținutul XML într-un tip de date de tip PHP folosind SimpleXMLElement. Datele PHP sunt apoi furnizate codificatorului Services_JSON. care, la rândul său, formează rezultatul final al datelor în format JSON.
Mastering PHP cod
Această implementare a xml2json este compusă din trei părți:
- xml2json.php - clasa PHP cu două funcții statice.
- xml2json_test.php - Driver de testare pentru lucrul cu funcția de conversie xml2json.
- test1.xml, test2.xml, test3.xml, test4.xml - fișiere XML de diverse complexități.
Lista 4 definește câteva constante utile. Prima linie de cod importa implementarea Services_JSON.
Listing 4. Definirea constantelor în xml2json.php
Fragmentul de cod din listare 5 este funcția de intrare pentru convertorul xml2json. Este nevoie de date XML ca parametru de intrare și transformă șirul XML într-un obiect SimpleXMLElement. care este transferată la o altă funcție (recursivă) din această clasă. Această funcție convertește elementele XML într-o matrice PHP asociativă. Această matrice este apoi trecută ca parametru de intrare pentru encoderul Services_JSON. care transmite date în format JSON.
Înregistrarea 5. Utilizarea serviciilor_JSON în xml2json.php
Lungului Fragmentul de cod din listingul 6 utilizează o tehnică de recursie inspirată de comunitatea sursă PHP deschis (a se vedea. „Resurse“ secțiune). Este nevoie de SimpleXMLElement obiect ca parametru de intrare și recursiv trece prin XML-copac încorporat. Stochează toate elementele XML detectate într-o matrice PHP asociativă. Puteți regla adâncimea de recursiune prin modificarea constantei definite în listare 4.
Listing 6. Logica transformării în xml2json.php
Implementarea driverului de test pentru xml2json
Fragmentul de cod din listare 7 este un driver de test care utilizează logica de transformare xml2json.
Listing 7. xml2json_test.php
Puteți rula programul din linia de comandă cu numele fișierului XML specificat ca argument al liniei de comandă:
Când este executat din linia de comandă, programul citește conținutul XML din fișier într-o variabilă de șir. Apoi se numește o funcție statică în clasa xml2json pentru a obține rezultatul în format JSON. În plus față de rularea programului de la linia de comandă, puteți schimba logica în fișierul sursă pentru a oferi convertor xml2json în forma numit serviciu web folosind protocoalele de acces Simple Object Access Protocol (SOAP) și Representational State Transfer (REST). Dacă este necesar, puteți face acest lucru cu ușurință în PHP cu costuri minime.
Lista 8 arată unul dintre cele patru fișiere XML de testare livrate împreună cu articolul pentru a testa implementarea lui xml2json. Gradul de complexitate al acestor fișiere este diferit. Puteți transfera unul dintre aceste fișiere ca argument de linie de comandă la driverul de testare xml2json_test.php.
Listarea 8. Testarea implementării xml2json cu test2.xml
Fragmentul de cod din listingul 9 reprezintă rezultatul în format JSON utilizând fișierul test2.xml ca argument în linia de comandă pentru driverul de test xml2json_test.php.
Afișați 9. Rezultați în format JSON pentru test2.xml
concluzie
Puteți folosi codul sursă furnizat cu acest articol, o varietate de scopuri - ca program de sine stătător ca o bibliotecă de clasă pentru programul curent care rulează pe partea de server, sau ca o funcție SOAP / REST Web-service pentru participarea la arhitectura orientată spre servicii corporative (Service - Arhitectura orientată - SOA).