Convertiți xml la json la php (sursă) - produse software

Edward Pring, John Morar, Sentil Nathan

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

Listing 2. Un exemplu simplu de date JSON

Listarea 3. Fragment de cod pentru procesarea datelor în format JSON primit de la server

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.

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 o funcție 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

Fragmentul lung de cod din listare 6 utilizează metodologia de recurs care a fost dezvoltată de comunitatea PHP a comunității open source. Este nevoie de un obiect SimpleXMLElement ca parametru de intrare și traversează recursiv un arbore XML imbricat. 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

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 listare 9 este rezultatul în format JSON atunci când se utilizează fișierul test2.xml ca argument din linia de comandă pentru driverul de testare xml2json_test.php.

Afișați 9. Rezultați formatul JSON pentru test2.xml

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).

Descărcări







Articole similare

Trimiteți-le prietenilor: