PHP中数组转换为SimpleXML教程

在本篇文章中我们给大家总结了一篇关于PHP中数组转换为SimpleXML教程内容,有需要的朋友们跟着学习参考下。

SimpleXML扩展函数提供了将XML转换为对象的工具集,这些对象处理普通的属性选择器和数组迭代器。

示例1:

  1. <?php
  2. // 将php数组转换为xml文档的代码
  3. //定义一个将数组转换成xml的函数。
  4. function arrayToXml($array, $rootElement = null, $xml = null) {
  5. $_xml = $xml;
  6. // 如果没有$rootElement,则插入$rootElement
  7. if ($_xml === null) {
  8. $_xml = new SimpleXMLElement($rootElement !== null ? $rootElement : '<root/>');
  9. }
  10. // 访问所有键值对
  11. foreach ($array as $k => $v) {
  12. // 如果有嵌套数组
  13. if (is_array($v)) {
  14. // 调用嵌套数组的函数
  15. arrayToXml($v, $k, $_xml->addChild($k));
  16. }
  17. else {
  18. $_xml->addChild($k, $v);
  19. }
  20. }
  21. return $_xml->asXML();
  22. }
  23. // 创建一个用于演示的数组
  24. $my_array = array (
  25. 'name' => 'GFG',
  26. 'subject' => 'CS',
  27. // 创建嵌套数组。
  28. 'contact_info' => array (
  29. 'city' => 'Noida',
  30. 'state' => 'UP',
  31. 'email' => '448199179@qq.com'
  32. ),
  33. );
  34. // 调用arrayToxml函数并打印结果
  35. echo arrayToXml($my_array);
  36. ?>

输出:

  1. <?xml version="1.0"?>
  2. <root>
  3. <name> GFG </name>
  4. <subject> CS </subject>
  5. <contact_info >
  6. <city > Noida < /city >
  7. <state > UP < /state >
  8. <email > 448199179@qq.com </email>
  9. <contact_info>
  10. <root>

可以使用array_walk_recursive()函数解决上述问题,此函数将数组转换为xml文档,其中数组的键转换为值,数组的值转换为xml的元素。

示例2:

  1. <?php
  2. // 将php数组转换为xml文档的代码
  3. //创建一个数组
  4. $my_array = array (
  5. 'a' => 'x',
  6. 'b' => 'y',
  7. // creating nested array
  8. 'another_array' => array (
  9. 'c' => 'z',
  10. ),
  11. );
  12. // 这个函数使用root元素创建一个xml对象。
  13. $xml = new SimpleXMLElement('<root/>');
  14. // 这个函数重新将数组元素添加到xml文档中
  15. array_walk_recursive($my_array, array ($xml, 'addChild'));
  16. // 这个函数打印xml文档。
  17. print $xml->asXML();
  18. ?>

输出:

  1. <?xml version =“1.0”?> <root>
  2. <x> a </ x>
  3. <y> b </ y>
  4. <z> c </ z> </ root>

注:如果系统生成错误类型:

PHP Fatal error: Uncaught Error: Class ‘SimpleXMLElement' not found in /home/6bc5567266b35ae3e76d84307e5bdc78.php:24 ,

那么只需安装php-xml,php-simplexml软件包。