Расширение PHP SimpleXML разбирает XML в масcив. SimpleXML имеет полный набор инструментов, которые позволяют читать, писать и анализировать XML-документ. Расширение SimpleXML требует минимальную версию PHP 5 и расширение PHP libxml.
Расширение PHP SimpleXML включено по умолчанию, проверить это можно с помощью функции phpinfo():
Как преобразовать XML в массив с помощью PHP
Для примера возьмем такой XML документ:
<?xml version='1.0'?> <items> <item id='1'> <name>Box</name> <year>2021</year> <price>30.00</price> <address> <street>3030 Info Avenue</street> <city>Los Angeles</city> <state>CA</state> </address> </item> <item id='2'> <name>New box</name> <year>2022</year> <price>50.00</price> <address> <street>3040 Info Road</street> <city>Duluth</city> <state>GA</state> </address> </item> </items>
Преобразуем XML в массив PHP. Для этого загружаем строку с XML в simplexml_load_string(), в ответ получим ассоциативный массив:
<?php $xml = "<?xml version='1.0'?> <items> <item id='1'> <name>Box</name> <year>2021</year> <price>30.00</price> <address> <street>3030 Info Avenue</street> <city>Los Angeles</city> <state>CA</state> </address> </item> <item id='2'> <name>New box</name> <year>2022</year> <price>50.00</price> <address> <street>3040 Info Road</street> <city>Duluth</city> <state>GA</state> </address> </item> </items>"; libxml_use_internal_errors(TRUE); //Используем simplexml_load_file(), если нужно распарсить файл //$objXmlDocument = simplexml_load_file("pathToFile.xml"); //Используем simplexml_load_string(), если нужно распарсить строку $objXmlDocument = simplexml_load_string($xml); if ($objXmlDocument === FALSE) { echo "There were errors parsing the XML file.\n"; foreach(libxml_get_errors() as $error) { echo $error->message; } exit; } $objJsonDocument = json_encode($objXmlDocument); $arrOutput = json_decode($objJsonDocument, TRUE); echo "<pre>"; print_r($arrOutput); echo "</pre>"; foreach ($arrOutput['item'] as $arrOutputKey => $arrOutputValue) { echo $arrOutputValue['@attributes']['id'] . ' - ' .$arrOutputValue['name'] . '<br />'; }
Пример выполнения скрипта:
Array ( [item] => Array ( [0] => Array ( [@attributes] => Array ( [id] => 1 ) [name] => Box [year] => 2021 [price] => 30.00 [address] => Array ( [street] => 3030 Info Avenue [city] => Los Angeles [state] => CA ) ) [1] => Array ( [@attributes] => Array ( [id] => 2 ) [name] => New box [year] => 2022 [price] => 50.00 [address] => Array ( [street] => 3040 Info Road [city] => Duluth [state] => GA ) ) ) ) 1 - Box 2 - New box
Комментарии
Комментарии отсутствуют, Вы можете быть первым