Převod XML na asociativní pole v PHP

Convert Xml Associative Array Php



XML (Extensible Markup Language) je jeden typ značkovacího jazyka, který se používá k ukládání dat ve formátu čitelném pro člověka. Liší se od ostatních značkovacích jazyků. Každý tag tohoto jazyka je definován uživatelem. Použití XML je lepším řešením pro uložení malého množství dat, pokud nechcete pro ukládání dat používat žádnou databázi. K datům z dokumentu XML lze snadno přistupovat a používat je v jakékoli webové aplikaci pomocí skriptu PHP. V tomto kurzu je ukázáno, jak lze dokument XML analyzovat a uložit do asociativního pole.

Nezbytné funkce

K převodu obsahu XML do asociativního pole PHP se používají některé vestavěné funkce. Účel různých funkcí je vysvětlen níže.







file_get_contents ():



Tato funkce vrací data řetězce převedením jakýchkoli dat XML. Jako argument bere jakýkoli název souboru XML.



simplexml_load_string ():





Tato funkce vrací objekt XML převedením dat řetězce XML. Jako argument bere data řetězce XML.

simplexml_load_file ():



Tato funkce vrací objekt XML převedením obsahu souboru XML. Jako argument bere název souboru XML.

SimpleXMLElement ():

Slouží k vytvoření objektu XML z dat XML. Jako argument bere hodnotu obsahu XML.

json_encode ():

Vrací objekt JSON převedením objektu XML. Jako argument bere proměnnou objektu XML.

json_decode ():

Vrací asociativní pole PHP převedením dat JSON. Jako argument bere proměnnou objektu JSON.

Vytvořte soubor XML

Budete muset vytvořit soubor XML nebo definovat data XML ve skriptu, abyste věděli, jak převádět data XML do asociativního pole PHP. Vytvořte soubor XML s názvem courses.xml s následujícím obsahem a uložte jej na místo, kde je skript PHP. Soubor obsahuje podřízené prvky pod nadřazeným prvkem. Po převodu následujícího souboru XML do pole PHP se tedy vygeneruje dvourozměrné asociativní pole.

kurzy.xml

verze='1,0'?>
>
>Webové programování>
>6 měsíců>
>
>
>Radost z programování PHP>
>Alan Forbes>
>Švestkový ostrov>
>
>
>PHP& MySQL nováček Ninja
Tom Butler a Kevin Yank
SitePoint


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


Příklad 1: Převod obsahu souboru XML na asociativní pole bez chyby kontroly

Následující skript ukazuje použití funkcí file_get_contents () a simplexml_load_string () k vytvoření objektu XML. Zde se soubory Course.xml používají pro převod, který byl vytvořen dříve. Dále se funkce json_encode () a json_decode () používají k získání asociativního pole po převodu obsahu souboru XML. Pokud v obsahu XML neexistuje žádná chyba, pak následující skript nezobrazí žádnou chybu. Tady | _+_ | tag slouží k formátování formátu pole.



// Definujte existující soubor XML
$ xml = 'Courses.xml';

// Přečíst celý obsah souboru XML jako řetězec XML
$ xmlData = file_get_contents ($ xml);

// Převod dat řetězce XML na objekt XML
$ xmlObject = simplexml_load_string ($ xmlData);

// Převod objektu XML na objekt JSON
$ jsonObject = json_encode ($ xmlObject);

// Převod objektu JSON na asociativní pole
$ assArray = json_decode ($ jsonObject, skutečný);

// Vytiskne strukturu asociativního pole
vyhodil '
  
';

?>

Výstup:

Po spuštění skriptu PHP se objeví následující výstup. Zde je generováno dvourozměrné pole na základě obsahu souboru XML, courses.xml.

Příklad 2: Převést obsah souboru XML na asociativní pole s chybou kontroly

Při převodu XML na asociativní pole je lepší zkontrolovat chybu. Kodéru pomůže ladit kód, pokud je ve skriptu implementována kontrola chyb. Následující skript ukazuje způsoby, jak převést obsah souboru XML do asociativního pole pomocí funkce simplexml_load_file () se zpracováním chyb. Funkce libxml_use_internal_errors () se používá s hodnotou TRUE k povolení zpracování chyb. Pokud obsah souboru XML použitý ve skriptu obsahuje jakoukoli chybu, pak funkce simplexml_load_file () vrátí hodnotu false a chybová zpráva se vytiskne pomocí funkce libxml_get_errors (). Pokud v souboru XML neexistuje žádná chyba, pak se obsah souboru správně převede na dvourozměrné asociativní pole.



// Povolit zpracování chyb uživatelů
libxml_use_internal_errors (SKUTEČNÝ);

// Vytvoření objektu XML
$ objXml = simplexml_load_file ('Courses.xml');

// Chyba tisku, pokud objekt XML vrací hodnotu false
-li ($ objXml === NEPRAVDIVÉ) {
vyhodil 'Při analýze souboru XML došlo k chybě.' n';
pro každého( libxml_get_errors () tak jako $ chyba) {
vyhodil $ chyba->zpráva;
}
výstup ;
}

// Převod objektu XML na objekt JSON
$objJson = json_encode ($ objXml);
// Převod objektu JSON na asociativní pole
$ assarr = json_decode ($objJson, SKUTEČNÝ);

// Vytiskne strukturu asociativního pole
vyhodil '
';  
print_r ($assArray);
echo '
'
;

?>

Výstup:

Po spuštění skriptu PHP se objeví následující výstup. Zde v souboru XML neexistuje žádná chyba. Dvourozměrné pole se tedy vygenerovalo jako v předchozím příkladu na základě obsahu souboru XML, courses.xml.

Příklad 3: Převod obsahu XML na asociativní pole

Následující skript ukazuje způsob převodu dat XML na asociativní pole pomocí funkce SimpleXMLElement (). Ve skriptu je obsah XML uložen do proměnné s názvem $ xml, která se používá jako argument funkce SimpleXMLElement (). Dále se funkce json_encode () a json_decode () používají k získání asociativního pole po převodu obsahu souboru XML.



// Definujte proměnnou XML
$ xml = <<


[chráněno emailem]

12 / A, Dhanmondi
Dháka



[chráněno emailem]

156, motiv
Dháka



[chráněno emailem]

21 / B, Mogbazar
Dháka



XML
;

// Vytvoření objektu XML
$ xmlObject = NovýSimpleXMLElement($ xml);
// Vytvoření objektu JSON
$ jsonObject = json_encode ($ xmlObject);
// Převod objektu JSON na asociativní pole
$ assArray = json_decode ($ jsonObject, skutečný);

// Vytiskne strukturu asociativního pole
vyhodil '
';  
print_r ($assarr);
echo '
'
;

?>

Výstup:

Po spuštění skriptu PHP se objeví následující výstup. Zde je generováno dvourozměrné pole na základě obsahu proměnné XML $ xml.

Závěr:

V tomto kurzu byly ukázány tři různé způsoby převodu obsahu XML do asociativního pole. To pomůže čtenářům poznat způsob práce s daty XML a snadno analyzovat data z obsahu XML pomocí skriptu PHP.