Converteer XML naar associatieve array in PHP

Convert Xml Associative Array Php



XML (Extensible Markup Language) is een type opmaaktaal dat wordt gebruikt om de gegevens in een voor mensen leesbaar formaat op te slaan. Het is anders dan andere opmaaktalen. Elke tag van deze taal is door de gebruiker gedefinieerd. Het gebruik van XML is de betere oplossing om een ​​kleine hoeveelheid gegevens op te slaan als u geen database wilt gebruiken voor het opslaan van gegevens. De gegevens uit het XML-document kunnen eenvoudig worden geopend en gebruikt in elke webtoepassing met behulp van een PHP-script. In deze zelfstudie wordt getoond hoe het XML-document kan worden geparseerd en opgeslagen in een associatieve array.

Noodzakelijke functies

Sommige ingebouwde functies worden gebruikt om de XML-inhoud om te zetten in een associatieve PHP-array. De doeleinden van de verschillende functies worden hieronder uitgelegd.







file_get_contents():



Deze functie retourneert de tekenreeksgegevens door alle XML-gegevens te converteren. Het neemt elke XML-bestandsnaam als argument.



simplexml_load_string():





Deze functie retourneert het XML-object door de XML-tekenreeksgegevens te converteren. Het neemt XML-tekenreeksgegevens als argument.

simplexml_load_file():



Deze functie retourneert het XML-object door de inhoud van het XML-bestand te converteren. Het neemt de XML-bestandsnaam als argument.

SimpleXMLElement ():

Het wordt gebruikt om een ​​XML-object te maken van XML-gegevens. Het neemt de XML-inhoudswaarde als argument.

json_encode():

Het retourneert het JSON-object door het XML-object te converteren. Het neemt de XML-objectvariabele als argument.

json_decode():

Het retourneert de associatieve PHP-array door JSON-gegevens te converteren. Het neemt de JSON-objectvariabele als argument.

XML-bestand maken

U moet een XML-bestand maken of XML-gegevens in het script definiëren om te weten hoe u XML-gegevens omzet in een associatieve PHP-array. Maak een XML-bestand met de naam cursussen.xml met de volgende inhoud en sla het op op de locatie waar het PHP-script zich bevindt. Het bestand bevat onderliggende elementen onder een bovenliggend element. Er wordt dus een tweedimensionale associatieve array gegenereerd na het converteren van het volgende XML-bestand naar een PHP-array.

cursussen.xml

versie='1.0'?>
>
>Webprogrammeren>
>6 maanden>
>
>
>Het plezier van PHP programmeren>
>Alan Forbes>
>Pruimeneiland>
>
>
>PHP& MySQL Beginner tot Ninja
Tom Butler & Kevin Yanko
SitePunt


Head First PHP & MySQL
Lynn Beighley & Michael Morrison
O'Reilly


Voorbeeld-1: XML-bestandsinhoud converteren naar een associatieve array zonder foutcontrole

Het volgende script toont het gebruik van de functies file_get_contents() en simplexml_load_string() om een ​​XML-object te maken. Hier wordt het bestand courses.xml gebruikt voor conversie die eerder is gemaakt. Vervolgens worden de functies json_encode() en json_decode() gebruikt om de associatieve array te krijgen na het converteren van de inhoud van het XML-bestand. Als er geen fout bestaat in de XML-inhoud, wordt er geen fout weergegeven door het volgende script. Hier, |__+_| tag wordt gebruikt om de array op een geformatteerde manier af te drukken.



//Definieer het bestaande XML-bestand
$xml = 'cursussen.xml';

//Lees de volledige inhoud van het XML-bestand als XML-string
$xmlData = file_get_contents ($xml);

// Converteer XML-tekenreeksgegevens naar XML-object
$xmlObject = simplexml_load_string ($xmlData);

// Converteer XML-object naar JSON-object
$jsonObject = json_encode ($xmlObject);

// Converteer JSON-object naar een associatieve array
$assArray = json_decode ($jsonObject, waar);

// Druk de structuur van de associatieve array af
gooide uit '
  
';

?>

Uitgang:

De volgende uitvoer zal verschijnen na het uitvoeren van het PHP-script. Hier wordt een tweedimensionale array gegenereerd op basis van de inhoud van het XML-bestand cursussen.xml.

Voorbeeld-2: XML-bestandsinhoud converteren naar een associatieve array met controlefout

Het is beter om de fout te controleren bij het converteren van XML naar een associatieve array. Het zal de codeur helpen om de code te debuggen als de foutcontrole in het script is geïmplementeerd. Het volgende script toont de manieren om de inhoud van XML-bestanden te converteren naar een associatieve array met de functie simplexml_load_file() met foutafhandeling. De functie libxml_use_internal_errors() wordt gebruikt met de waarde TRUE om de foutafhandeling mogelijk te maken. Als de inhoud van het XML-bestand die in het script wordt gebruikt een fout bevat, retourneert de functie simplexml_load_file() false en wordt het foutbericht afgedrukt met de functie libxml_get_errors(). Als er geen fout in het XML-bestand staat, wordt de inhoud van het bestand correct omgezet in een tweedimensionale associatieve array.



//Gebruikersfoutafhandeling inschakelen
libxml_use_internal_errors (WAAR);

//Maak XML-object
$ objXml = simplexml_load_file ('cursussen.xml');

// Afdrukfout als het XML-object false retourneert
indien ($ objXml === ONWAAR) {
gooide uit 'Er zijn fouten opgetreden bij het ontleden van het XML-bestand.N';
foreach( libxml_get_errors () als $ fout) {
gooide uit $ fout->bericht;
}
Uitgang ;
}

// Converteer XML-object naar JSON-object
$ objJson = json_encode ($ objXml);
// Converteer JSON-object naar een associatieve array
$assarr = json_decode ($ objJson, WAAR);

// Druk de structuur van de associatieve array af
gooide uit '
';  
print_r ($assArray);
echo '
'
;

?>

Uitgang:

De volgende uitvoer zal verschijnen na het uitvoeren van het PHP-script. Hier bestaat geen fout in het XML-bestand. Er is dus een tweedimensionale array gegenereerd zoals in het vorige voorbeeld op basis van de inhoud van het XML-bestand cursussen.xml.

Voorbeeld-3: XML-inhoud converteren naar een associatieve array

Het volgende script toont de manier om XML-gegevens om te zetten in een associatieve array met de functie SimpleXMLElement(). In het script wordt de XML-inhoud opgeslagen in een variabele met de naam $xml die wordt gebruikt als het argument van de functie SimpleXMLElement(). Vervolgens worden de functies json_encode() en json_decode() gebruikt om de associatieve array te krijgen na het converteren van de inhoud van het XML-bestand.



//Definieer de XML-variabele
$xml = <<


[e-mail beveiligd]

12 / A, Dhanmondi
Dhaka



[e-mail beveiligd]

156, Motijeel
Dhaka



[e-mail beveiligd]

21 / B, Mogbazar
Dhaka



XML
;

//Maak XML-object
$xmlObject = nieuweSimpleXMLElement($xml);
//JSON-object maken
$jsonObject = json_encode ($xmlObject);
// Converteer JSON-object naar een associatieve array
$assArray = json_decode ($jsonObject, waar);

// Druk de structuur van de associatieve array af
gooide uit '
';  
print_r ($assarr);
echo '
'
;

?>

Uitgang:

De volgende uitvoer zal verschijnen na het uitvoeren van het PHP-script. Hier wordt een tweedimensionale array gegenereerd op basis van de inhoud van de XML-variabele $xml.

Conclusie:

Er waren drie verschillende manieren om XML-inhoud om te zetten in een associatieve array die in deze tutorial werd getoond. Dit zal de lezers helpen om de manier te kennen om met XML-gegevens te werken en de gegevens uit de XML-inhoud gemakkelijk te ontleden met behulp van een PHP-script.