前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP中数组转换为SimpleXML教程

PHP中数组转换为SimpleXML教程

作者头像
砸漏
发布2020-10-29 10:33:55
1.5K0
发布2020-10-29 10:33:55
举报
文章被收录于专栏:恩蓝脚本

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

示例1:

代码语言:javascript
复制
<?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); 
? 

输出:

代码语言:javascript
复制
<?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:

代码语言:javascript
复制
<?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(); 
? 

输出:

代码语言:javascript
复制
<?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软件包。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档