Jak otworzyć plik XML i przekonwertować na tablice w PHP?


Pliki XML są często stosowane do wymiany informacji (danych) pomiędzy aplikacjami lub systemami. Język XML za pomocą znaczników pozwala na zapis danych wraz ze struktura w zwykłym pliku tekstowym. Skorzystanie z tych danych wymaga jednak przetworzenia struktury XML do przyjaznej dla języków programowania (w naszym przypadku PHP) formy. Tablice oczywiście są jedna z takich form. PHP ma wiele funkcji wspierających operacje na tablicach.


Zacznijmy więc od wczytania danych z pliku do zmiennej która nazwiemy roboczo dane. Wpisujemy lokalizacje pliku w zmienna nazwa_pliku i otwieramy go funkcja fopen z parametrem r czyli tylko do odczytu.

$nazwa_pliku = "../pliki/testowy.xml";

$plik = fopen($nazwa_pliku, "r") or die("Unable to open file!");

I na końcu odczytanie całego treści pliku i przypisanie do zmiennej oraz zamknięcie pliku.

$dane = fread($plik,filesize($nazwa pliku));

fclose($plik);

Gdy wszystkie dane z pliku XML mamy już w zmiennej dane możemy przystąpić do właściwego przekonwertowania struktury w tablice.

$xml = simplexml_load_string($dane, "SimpleXMLElement", LIBXML_NOCDATA);

Używamy w tym celu funkcji simplexml_load_string zamieniającej tekst zawierający znaczniki XML w obiekt. Następną użytą funkcja będzie json_encode zamieniająca XML-a w format JSON i ostatnie polecenie json_decode które zwróci nam tablicę.

$json = json_encode($xml);

$tablica = json_decode($json,TRUE);

Tym sposobem zamieniliśmy XML w przyjazną tablice, cały kod poniżej.

$nazwa_pliku = "../pliki/testowy.xml";

$plik = fopen($nazwa_pliku, "r") or die("Unable to open file!");

$dane = fread($plik,filesize($nazwa pliku));

fclose($plik);

$xml = simplexml_load_string($dane, "SimpleXMLElement", LIBXML_NOCDATA);

$json = json_encode($xml);

$tablica = json_decode($json,TRUE);

$json = json_encode($xml);

$tablica = json_decode($json,TRUE);

nazwa.pl