O abreviere a limbajului eXtensible Markup Language, XML înglobează bucăți de informații în etichete, similare cu HTML, dar numele etichetelor sunt definite de utilizator. Gruparea informațiilor se face prin imbricarea etichetelor una în cealaltă. Folosind exemplul nostru Family Guy de mai sus, răspunsul nostru XML ar fi următorul:
<Response> <Griffin> <Peter >father</Peter> <Lois>mother</Lois> <Stewie>son</Stewie> <Chris>son</Chris> <Meg>daughter</Meg> <Brian>dog</Brian> </Griffin> <Quagmire> <Glen>neighbor</Glen > </Quagmire> </Response>
CARACTERISTICA UTILĂ: Puteți testa șirurile JSON și XML de validare pe care le creați sau le primiți prin copierea și lipirea lor pe site-uri de validare precum jsonlint.com și xmlvalidation.com. Ele vă pot ajuta să identificați zonele cu probleme din șirurile dvs. pentru a vă asigura că datele sunt stocate corect.
Rețineți că precizez că așa ar putea arăta codul dvs. în aceste exemple. Formatul real al ieșirii ar varia în funcție de modul în care dezvoltatorii decid să creeze șirul de răspuns și, de asemenea, în funcție de opțiunile disponibile utilizatorului cu privire la modul în care doresc să fie organizate informațiile. De exemplu, am putea dori vârstele personajului în loc de relații precum tată sau fiică, sau dezvoltatorul ar putea grupa rezultatele după sex și ar putea pune numele și prenumele ca perechi de valori.
Este important să rețineți că atunci când interacționați cu fluxurile de date, acestea nu vor arăta ca mai sus, ci vor fi șiruri lungi, fără spațiere și întreruperi de linie, deoarece acest lucru reduce dimensiunea șirului. Formatarea pe care o vedeți mai sus este adesea denumită formatul „pretty print”, care adaugă spațiere și formatare suplimentare pentru a-l face mai ușor de citit pentru om.
Putem crea atât XML, cât și JSON în PHP. Puteți face acest lucru creând șirul exact necesar pentru a-l formata sau putem folosi funcții în PHP pentru a ne ajuta. Pachetul SimpleXML ne permite să creăm, să navigăm și să edităm conținut XML, în timp ce funcțiile json_encode și json_decode ne permit un mijloc ușor de a converti JSON în și din matrice.
Pentru concizie, vom lua în considerare exemple de primire a datelor în aceste două formate. În timp ce conversia JSON în, și în afara, matricei, se face cu ușurință cu json_encode() și json_decode(), crearea manuală a datelor în aceste formate ar necesita o privire mult mai profundă atât asupra XML, cât și asupra JSON. Călătoria dvs. acolo poate începe cu secțiunea Aflați mai multe. Vă recomand să explorați cel puțin un format în profunzime, deoarece veți intra în contact cu aceste formate atunci când interacționați cu API-urile. Tendința actuală face ca JSON să primească mai multă atenție în noile dezvoltări, dar există o mulțime de sisteme XML deja construite și multe altele care oferă ambele.
O modalitate ușoară de a interacționa cu datele XML sau JSON în PHP este să le convertim în matrice pe care le putem parcurge mai ușor. Când lucrăm cu XML, putem folosi pachetul SimpleXML integrat în PHP pentru a citi șirul sau fișierul nostru folosind $data = simplexml_load_string($ourXML); sau $data = simplexml_load_file(„ourXmlFile.xml”);. Putem deschide fișiere JSON pentru a le înșira sau a le primi dintr-o altă sursă și le putem decoda folosind $data = json_decode($ourJson). La fel cum am făcut cu matricele pe care le-am creat mai devreme, putem vedea datele noastre utilizând print_r($data);.
$ourJson = '{"Griffins":{"Peter":"Father", "Lois":"Mother", "Stewie":"Son", "Chris":"Son", "Meg":"Daughter", "Brian":"Dog"}, }'; $familyGuy = json_decode($ourJson,1); print_r($familyGuy);
|
Array ( [Griffins] => Array ( [Peter] => Father [Lois] => Mother [Stewie] => Son [Chris] => Son [Meg] => Daughter [Brian] => Dog ) ) |
Asigurați-vă că plasați 1 ca a doua opțiune în apelul nostru json_decode(), deoarece indică funcției să returneze datele ca o matrice în loc de obiecte. Același transfer în matrice pentru XML devine puțin mai complicat, deoarece PHP nu acceptă în mod nativ acest tip de conversie, așa că trebuie să facem mai mult pentru ca lista noastră completă să fie afișată ca matrice:
$ourXML= '<Response> <Griffin> <Peter >Father</Peter> <Lois>Mother</Lois> <Stewie>Son</Stewie> <Chris>Son</Chris> <Meg>Daughter</Meg> <Brian>Dog</Brian> </Griffin> <Quagmire> <Glen>Neighbor</Glen> </Quagmire> </Response>'; $familyGuy = simplexml_load_string($ourXML); $familyGuy = (array) $familyGuy; foreach ($familyGuy as &$group){$group = (array) $group;} print_r($familyGuy);
|
Array ( [Griffin] => Array ( [Peter] => Father [Lois] => Mother [Stewie] => Son [Chris] => Son [Meg] => Daughter [Brian] => Dog ) [Quagmire] => Array ( [Glen] => Neighbor ) ) |
Deși am reușit să facem din stratul exterior al datelor o matrice doar prin re-declararea tipului său, conversia tip casting în PHP nu este recursivă. Cu toate acestea, șirul de caractere simplexml_load_ transformă XML-ul nostru în obiecte, nu în matrice, așa că, prin bucla prin matricea noastră din nou și transformând fiecare element într-o matrice, putem corecta datele din al doilea strat. Acest proces ar trebui repetat pentru fiecare strat imbricat de date.
AFLĂ MAI MULTE: Structuri de date succint (Pt 1): https://www.syncfusion.com/succinctly-free-ebooks/datastructurespart1
Lasă un răspuns