Konvertera XML till Associative Array i PHP

Convert Xml Associative Array Php



XML (Extensible Markup Language) är en typ av markeringsspråk som används för att lagra data i ett läsbart format. Det skiljer sig från andra markeringsspråk. Varje tagg på detta språk är användardefinierat. Att använda XML är den bättre lösningen för att lagra en liten mängd data när du inte vill använda någon databas för att lagra data. Data från XML -dokumentet kan lätt nås och användas i alla webbprogram med ett PHP -skript. Hur XML -dokumentet kan analyseras och lagras i en associerad array visas i den här självstudien.

Nödvändiga funktioner

Vissa inbyggda funktioner används för att konvertera XML-innehållet till en associativ PHP-array. Syftet med olika funktioner förklaras nedan.







file_get_contents ():



Denna funktion returnerar strängdata genom att konvertera alla XML -data. Det tar alla XML -filnamn som ett argument.



simplexml_load_string ():





Denna funktion returnerar XML -objektet genom att konvertera XML -strängdata. Det tar XML -strängdata som ett argument.

simplexml_load_file ():



Denna funktion returnerar XML -objektet genom att konvertera XML -filinnehåll. Det tar XML -filnamnet som ett argument.

SimpleXMLElement ():

Det används för att skapa ett XML -objekt från XML -data. Det tar XML -innehållsvärdet som ett argument.

json_encode ():

Det returnerar JSON -objektet genom att konvertera XML -objektet. Det tar XML -objektvariabeln som ett argument.

json_decode ():

Det returnerar den associativa PHP -matrisen genom att konvertera JSON -data. Det tar JSON -objektvariabeln som ett argument.

Skapa XML -fil

Du måste skapa en XML -fil eller definiera XML -data i skriptet för att veta hur man konverterar XML -data till en associativ PHP -array. Skapa en XML -fil med namnet courses.xml med följande innehåll och spara den på platsen där PHP -skriptet finns. Filen innehåller underordnade element under ett överordnat element. Så kommer en tvådimensionell associerad array att genereras efter att följande XML-fil har konverterats till en PHP-array.

kurser. xml

version='1.0'?>
>
>Webbprogrammering>
>6 månader>
>
>
>Glädjen i PHP -programmering>
>Alan Forbes>
>Plommonön>
>
>
>PHP& MySQL -nybörjare till Ninja
Tom Butler och Kevin Yank
SitePoint


Head First PHP & MySQL
Lynn Beighley och Michael Morrison
O’Reilly


Exempel-1: Konvertera XML-filinnehåll till en associerad array utan att kontrollera fel

Följande skript visar användningen av funktionerna file_get_contents () och simplexml_load_string () för att skapa XML -objekt. Här används filen courses.xml för konvertering som skapades tidigare. Därefter används json_encode () och json_decode () -funktionen för att få den associerade matrisen efter att ha konverterat XML -filinnehållet. Om inget fel uppstår i XML -innehållet visas inget fel med följande skript. Här, | _+_ | tag används för att skriva ut matrisen på ett formaterat sätt.



// Definiera den befintliga XML -filen
$ xml = 'courses.xml';

// Läs hela innehållet i XML -filen som XML -sträng
$ xmlData = file_get_contents ($ xml);

// Konvertera XML -strängdata till XML -objekt
$ xmlObject = simplexml_load_string ($ xmlData);

// Konvertera XML -objekt till JSON -objekt
$ jsonObject = json_encode ($ xmlObject);

// Konvertera JSON -objekt till en associativ matris
$ assArray = json_decode ($ jsonObject, Sann);

// Skriv ut strukturen för den associativa matrisen
kastade ut '
  
';

?>

Produktion:

Följande utdata visas efter att PHP -skriptet har körts. Här genereras en tvådimensionell matris baserat på innehållet i XML-filen, kurser.xml.

Exempel 2: Konvertera XML-filinnehåll till en associerad matris med kontrollfel

Det är bättre att kontrollera fel när du konverterar XML till en associerad matris. Det hjälper kodaren att felsöka koden om felkontrollen implementeras i skriptet. Följande skript visar sätten att konvertera XML -filinnehåll till en associerad array med hjälp av funktionen simplexml_load_file () med felhantering. Funktionen libxml_use_internal_errors () används med TRUE -värde för att aktivera felhanteringen. Om innehållet i XML -fil som används i skriptet innehåller något fel kommer funktionen simplexml_load_file () att returnera false och felmeddelandet skrivs ut med hjälp av libxml_get_errors () -funktionen. Om det inte finns något fel i XML-filen kommer innehållet i filen att konverteras korrekt till en tvådimensionell associativ matris.



// Aktivera användarfelhantering
libxml_use_internal_errors (SANN);

// Skapa XML -objekt
$ objXml = simplexml_load_file ('courses.xml');

// Utskriftsfel om XML -objektet returnerar falskt
om ($ objXml === FALSK) {
kastade ut 'Det uppstod fel vid analys av XML -filen. n';
för varje( libxml_get_errors () som $ fel) {
kastade ut $ fel->meddelande;
}
utgång ;
}

// Konvertera XML -objekt till JSON -objekt
$ objJson = json_encode ($ objXml);
// Konvertera JSON -objekt till en associativ matris
$ assarr = json_decode ($ objJson, SANN);

// Skriv ut strukturen för den associativa matrisen
kastade ut '
';  
print_r ($assArray);
echo '
'
;

?>

Produktion:

Följande utdata visas efter att PHP -skriptet har körts. Här finns inget fel i XML -filen. Så har en tvådimensionell array genererat som det föregående exemplet baserat på innehållet i XML-filen, courses.xml.

Exempel-3: Konvertera XML-innehåll till en associativ matris

Följande skript visar sättet att konvertera XML -data till en associativ matris med hjälp av funktionen SimpleXMLElement (). I skriptet lagras XML -innehållet i en variabel med namnet $ xml som används som argument för funktionen, SimpleXMLElement (). Därefter används json_encode () och json_decode () -funktionen för att få den associerade matrisen efter att ha konverterat XML -filinnehållet.



// Definiera XML -variabeln
$ xml = <<


[e -postskyddad]

12 / A, Dhanmondi
Dhaka



[e -postskyddad]

156, Motiv
Dhaka



[e -postskyddad]

21 / B, Mogbazar
Dhaka



XML
;

// Skapa XML -objekt
$ xmlObject = nySimpleXMLElement($ xml);
// Skapa JSON -objekt
$ jsonObject = json_encode ($ xmlObject);
// Konvertera JSON -objekt till en associativ matris
$ assArray = json_decode ($ jsonObject, Sann);

// Skriv ut strukturen för den associativa matrisen
kastade ut '
';  
print_r ($assarr);
echo '
'
;

?>

Produktion:

Följande utdata visas efter att PHP -skriptet har körts. Här genereras en tvådimensionell array baserad på innehållet i XML-variabeln, $ xml.

Slutsats:

Det fanns tre olika sätt att konvertera XML -innehåll till en associativ matris som visades i den här självstudien. Detta kommer att hjälpa läsarna att känna till sättet att arbeta med XML -data och analysera data från XML -innehållet genom att enkelt använda ett PHP -skript.