Convertiți xml la json pe php

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

Descărcați resurse

Subiecte conexe

Articole similare