PHP中数组转换为SimpleXML教程


Posted in PHP onJanuary 27, 2019

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

示例1:

<?php 
// 将php数组转换为xml文档的代码
 
//定义一个将数组转换成xml的函数。
function arrayToXml($array, $rootElement = null, $xml = null) { 
  $_xml = $xml; 
    
  // 如果没有$rootElement,则插入$rootElement
  if ($_xml === null) { 
    $_xml = new SimpleXMLElement($rootElement !== null ? $rootElement : '<root/>'); 
  } 
    
  // 访问所有键值对 
  foreach ($array as $k => $v) { 
      
    // 如果有嵌套数组 
    if (is_array($v)) { 
        
      // 调用嵌套数组的函数
      arrayToXml($v, $k, $_xml->addChild($k)); 
      } 
        
    else { 
        
        
      $_xml->addChild($k, $v); 
    } 
  } 
    
  return $_xml->asXML(); 
} 
  
// 创建一个用于演示的数组 
$my_array = array ( 
'name' => 'GFG', 
'subject' => 'CS', 
  
  // 创建嵌套数组。
  'contact_info' => array ( 
  'city' => 'Noida', 
  'state' => 'UP', 
  'email' => '448199179@qq.com'
  ), 
); 
  
// 调用arrayToxml函数并打印结果
echo arrayToXml($my_array); 
?>

输出:

<?xml version="1.0"?>
<root>
  <name> GFG </name>
  <subject> CS </subject>
  <contact_info >
    <city > Noida < /city >
    <state > UP < /state >
    <email > 448199179@qq.com </email>
  <contact_info>
<root>

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

示例2:

<?php 
// 将php数组转换为xml文档的代码
//创建一个数组
$my_array = array ( 
  'a' => 'x', 
  'b' => 'y', 
    
  // creating nested array 
  'another_array' => array ( 
    'c' => 'z', 
  ), 
); 
  
// 这个函数使用root元素创建一个xml对象。
$xml = new SimpleXMLElement('<root/>'); 
  
// 这个函数重新将数组元素添加到xml文档中
array_walk_recursive($my_array, array ($xml, 'addChild')); 
  
// 这个函数打印xml文档。 
print $xml->asXML(); 
?>

输出:

<?xml version =“1.0”?> <root> 
    <x> a </ x> 
    <y> b </ y> 
    <z> c </ z> </ root>

注:

如果系统生成错误类型:

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

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

PHP 相关文章推荐
如何在PHP中使用Oracle数据库(2)
Oct 09 PHP
10个可以简化php开发过程的MySQL工具
Apr 11 PHP
PHP循环结构实例讲解
Feb 10 PHP
php实现上传图片生成缩略图示例
Apr 13 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
Jun 12 PHP
跟我学Laravel之快速入门
Oct 15 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
Jul 09 PHP
Yii2中Restful API原理实例分析
Jul 25 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
Nov 14 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
PHP实现的多维数组去重操作示例
Jul 21 PHP
PHP实现笛卡尔积算法的实例讲解
Dec 22 PHP
实例讲解php实现多线程
Jan 27 #PHP
php中访问修饰符的知识点总结
Jan 27 #PHP
实例讲解php将字符串输出到HTML
Jan 27 #PHP
PHP常见加密函数用法示例【crypt与md5】
Jan 27 #PHP
PHP基于GD2函数库实现验证码功能示例
Jan 27 #PHP
PHP的PDO事务与自动提交
Jan 24 #PHP
PHP的PDO连接讲解
Jan 24 #PHP
You might like
Apache+php+mysql在windows下的安装与配置图解(最新版)
2008/11/30 PHP
php cookie 作用范围?不要在当前页面使用你的cookie
2009/03/24 PHP
php读取文件内容的三种可行方法示例介绍
2014/02/08 PHP
PHP Callable强制指定回调类型的方法
2016/08/30 PHP
基于jquery的超简单上下翻
2010/04/20 Javascript
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
2011/07/04 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
jQuery+CSS实现的网页二级下滑菜单效果
2015/08/25 Javascript
纯javascript移动优先的幻灯片效果
2015/11/02 Javascript
Highcharts学习之坐标轴
2016/08/02 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
2016/10/08 Javascript
深入理解JavaScript 参数按值传递
2017/05/24 Javascript
原生JS进行前后端同构
2018/04/22 Javascript
AngularJS日期格式化常见操作实例分析
2018/05/17 Javascript
Vue最新防抖方案(必看篇)
2019/10/30 Javascript
node.JS的crypto加密模块使用方法详解(MD5,AES,Hmac,Diffie-Hellman加密)
2020/02/06 Javascript
python使用PIL模块实现给图片打水印的方法
2015/05/22 Python
python机器学习库常用汇总
2017/11/15 Python
Python+tkinter使用40行代码实现计算器功能
2018/01/30 Python
pycharm 将python文件打包为exe格式的方法
2019/01/16 Python
浅析Python 中几种字符串格式化方法及其比较
2019/07/02 Python
python实现统计代码行数的小工具
2019/09/19 Python
python matplotlib拟合直线的实现
2019/11/19 Python
Python实现结构体代码实例
2020/02/10 Python
python基于socket函数实现端口扫描
2020/05/28 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
2020/12/10 Python
Bootstrap 学习分享
2012/11/12 HTML / CSS
前端实现弹幕效果的方法总结(包含css3和canvas的实现方式)
2018/07/12 HTML / CSS
美国婚礼装饰和活动用品批发供应商:Event Decor Direct
2018/10/12 全球购物
英国在线购买马术服装:EQUUS
2019/07/12 全球购物
htmlentities() 和 htmlspecialchars()有什么区别
2015/07/01 面试题
五年级语文教学反思
2014/01/30 职场文书
村干部承诺书
2014/03/28 职场文书
党在我心中演讲稿
2014/09/02 职场文书
法人授权委托书范本
2014/09/17 职场文书
台式电脑蓝牙适配器怎么安装?台式电脑蓝牙适配器安装教程
2022/04/08 数码科技