Как преобразовать массив в SimpleXML в PHP
Часто бывает необходимо сохранить данные в формате XML в базе данных или в файле для последующего использования. Для выполнения этого требования необходимо преобразовать данные в XML и сохранить файл XML.
Функции расширения SimpleXML предоставляют набор инструментов для преобразования XML в объект. Эти объекты имеют дело с обычными селекторами свойств и итераторами массивов.
Example 1:
<?php// Code to convert php array to xml document // Define a function that converts array to xml.function arrayToXml($array, $rootElement = null, $xml = null) { $_xml = $xml; // If there is no Root Element then insert root if ($_xml === null) { $_xml = new SimpleXMLElement($rootElement !== null ? $rootElement : "<root/>"); } // Visit all key value pair foreach ($array as $k => $v) { // If there is nested array then if (is_array($v)) { // Call function for nested array arrayToXml($v, $k, $_xml->addChild($k)); } else { // Simply add child element. $_xml->addChild($k, $v); } } return $_xml->asXML();} // Creating an array for demo$my_array = array ("name" => "GFG","subject" => "CS", // Creating nested array. "contact_info" => array ( "city" => "Noida", "state" => "UP", "email" => "feedback@geeksforgeeks.org" ),); // Calling arrayToxml Function and printing the resultecho arrayToXml($my_array);?> |
Выход:
<? xml version = "1.0"?>
<корень>
<name> GFG </name>
<subject> CS </subject>
<contact_info>
<город> Нойда </ city>
<состояние> ВВЕРХ </ состояние>
<электронная почта> feedback@geeksforgeeks.org </email>
<contact_info>
<корень>
Вышеуказанная проблема может быть решена с помощью функции array_walk_recursive (). Эта функция преобразует массив в XML-документ, где ключи массива преобразуются в значения, а значения массива преобразуются в элемент xml.
Example 2:
<?php// Code to convert php array to xml document // Creating an array$my_array = array ( "a" => "x", "b" => "y", // creating nested array "another_array" => array ( "c" => "z", ),); // This function create a xml object with element root.$xml = new SimpleXMLElement("<root/>"); // This function resursively added element// of array to xml documentarray_walk_recursive($my_array, array ($xml, "addChild")); // This function prints xml document.print $xml->asXML();?> |
Выход:
<? xml version = "1.0"? >
<корень>
<x> а </ x>
<y> б </ y>
<z> c </ z>
</ корень>
Примечание. Если система генерирует ошибку типа: Неустранимая ошибка PHP: Неперехваченная ошибка: Класс SimpleXMLElement не найден в /home/6bc5567266b35ae3e76d84307e5bdc78.php:24, тогда просто установите пакеты php-xml, php-simplexml.