Как преобразовать массив в 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 result echo 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 document array_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.