数组转xml用到不多用数组转json比较多了,但今天有一个功能就是必须要把数组转换成xml了,下面小编人网上找到了一段关于php 数组转xml的代码测试了都可以使用,下面整理分享给各位。

例子1

下面这个可以支持多维数组

测试代码:test.php

include './ArrayToXML.php';

header('Content-Type:   text/xml');

$data=array("name"=>"zhangsan","sex"=>"0","address"=>array("sheng"=>"chongqing","shi"=>"nanchuan","zhen"=>"daguan"));

echo ArrayToXML::toXml($data);

处理代码:ArrayToXML.php

class ArrayToXML

{

/**

* The main function for converting to an XML document.

* Pass in a multi dimensional array and this recrusively loops through and builds up an XML document.

*

* @param array $data

* @param string $rootNodeName - what you want the root node to be - defaultsto data.

* @param SimpleXMLElement $xml - should only be used recursively

* @return string XML

*/

public static function toXml($data, $rootNodeName = 'data', $xml=null)

{

// turn off compatibility mode as simple xml throws a wobbly if you don't.

if (ini_get('zend.ze1_compatibility_mode') == 1)

{

ini_set ('zend.ze1_compatibility_mode', 0);

}

if ($xml == null)

{

$xml = simplexml_load_string("<?xml version='1.0' encoding='utf-8'?>");

}

// loop through the data passed in.

foreach($data as $key => $value)

{

// no numeric keys in our xml please!

if (is_numeric($key))

{

// make string key...

$key = "unknownNode_". (string) $key;

}

// replace anything not alpha numeric

$key = preg_replace('/[^a-z]/i', '', $key);

// if there is another array found recrusively call this function

if (is_array($value))

{

$node = $xml->addChild($key);

// recrusive call.

ArrayToXML::toXml($value, $rootNodeName, $node);

}

else

{

// add single node.

$value = htmlentities($value);

$xml->addChild($key,$value);

}

}

// pass back as string. or simple xml object if you want!

return $xml->asXML();

}

}

ArrayToXML.php来源于网络,本人不做任何解释

例子2

// Xml 转 数组, 包括根键,忽略空元素和属性,尚有重大错误

function xml_to_array( $xml )

{

$reg = "/]*?>([\\x00-\\xFF]*?)/";

if(preg_match_all($reg, $xml, $matches))

{

$count = count($matches[0]);

$arr = array();

for($i = 0; $i < $count; $i )

{

$key= $matches[1][$i];

$val = xml_to_array( $matches[2][$i] );  // 递归

if(array_key_exists($key, $arr))

{

if(is_array($arr[$key]))

{

if(!array_key_exists(0,$arr[$key]))

{

$arr[$key] = array($arr[$key]);

}

}else{

$arr[$key] = array($arr[$key]);

}

$arr[$key][] = $val;

}else{

$arr[$key] = $val;

}

}

return $arr;

}else{

return $xml;

}

}

// Xml 转 数组, 不包括根键

function xmltoarray( $xml )

{

$arr = xml_to_array($xml);

$key = array_keys($arr);

return $arr[$key[0]];

}

代码

// 类似 XPATH 的数组选择器

function xml_array_select( $arr, $arrpath )

{

$arrpath = trim( $arrpath, '/' );

if(!$arrpath) return $arr;

$self = 'xml_array_select';

$pos = strpos( $arrpath, '/' );

$pos = $pos ? $pos : strlen($arrpath);

$curpath = substr($arrpath, 0, $pos);

$next = substr($arrpath, $pos);

if(preg_match("/\\[(\\d )\\]$/",$curpath,$predicate))

{

$curpath = substr($curpath, 0, strpos($curpath,"[{$predicate[1]}]"));

$result = $arr[$curpath][$predicate[1]];

}else $result = $arr[$curpath];

if( is_array($arr) && !array_key_exists($curpath, $arr) )

{

die( 'key is not exists:' . $curpath );

}

return $self($result, $next);

}

// 如果输入的数组是全数字键,则将元素值依次传输到 $callback, 否则将自身传输给$callback

function xml_array_each( $arr, $callback )

{

if(func_num_args()<2) die('parameters error');

if(!is_array($arr)) die('parameter 1 shuld be an array!');

if(!is_callable($callback)) die('parameter 2 shuld be an function!');

$keys = array_keys($arr);

$isok = true;

foreach( $keys as $key ) {if(!is_int($key)) {$isok = false; break;}}

if($isok)

foreach( $arr as $val ) $result[] = $callback($val);

else

$result[] = $callback( $arr );

return $result;

}

/**

* 最简单的XML转数组

* @param string $xmlstring XML字符串

* @return array XML数组

*/

function simplest_xml_to_array($xmlstring) {

return json_decode(json_encode((array) simplexml_load_string($xmlstring)), true);

}

php 数组xml,php 数组转xml的例子相关推荐

  1. php 字符串转换xml,php 数组转xml字符串、xml字符串转数组方法案例

    数组转xml字符串方法:两种方法/** * 数组转xml字符串方法1 * @param  arary $data 数组数据 * @param  boolean $type 是否需要根节 */ func ...

  2. PHP XML和数组互相转换

    转换代码如下 //数组转XMLfunction arrayToXml($arr){$xml = "<xml>";foreach ($arr as $key=>$v ...

  3. php 对象转xml字符串_php方法simplexml_load_string()解析xml转数组失败

    用php方法simplexml_load_string()解析xml成数组失败,总是返回false. 找了很多方法,终于知道在php用simplexml_load_string()解析xml成数组的时 ...

  4. php 将xml转换为数组,php怎么将xml转换成数组

    php怎么将xml转换成数组2021-03-10 14:54:59 php将xml转换成数组的方法:首先将xml数据转成object(对象)格式的数据:然后使用json_encode()函数将obje ...

  5. android中string.xml使用总结,string.xml 的作用以及意义——国际化应用

    为什么需要把应用中出现的文字单独存放在string.xml文件中呢? 一:是为了国际化,当需要国际化时,只需要再提供一个string.xml文件,把里面的汉子信息都修改为对应的语言(如,English ...

  6. php xml expat,PHP Expat :XML的解析器

    本文中,我将讨论任何用PHP内建的Expat解析器来处理XML文档.通过范例,我将演示Expat的处理方法.同时,范例可以告诉你如何: 建立你自己的处理函数 将XML文档转换成你自己的PHP数据结构 ...

  7. php如何新建xml文件,PHP新建XML打开XML读取XML怎么写

    下面青岛星网跟大家分享一个PHP操作XML类,其中包括了大量注释,用于在PHP中执行xml的相关操作,比如新建一个XML文件,打开一个XML文件,读取其中的内容等. define("ente ...

  8. php操作xml类,PHP实现的XML操作类【XML Library】

    本文实例讲述了PHP实现的XML操作类.分享给大家供大家参考,具体如下: 这是一个接口程序,需要大量分析解析XML,PHP的xml_parse_into_struct()函数不能直接生成便于使用的数组 ...

  9. json c语言 数组转字符串数组中,json和字符串/数组/集合的互相转换の神操作总结...

    一:前端字符串转JSON的4种方式 1,eval方式解析,恐怕这是最早的解析方式了. function strToJson(str){ var json = eval('(' + str + ')') ...

最新文章

  1. 多媒体流信息提取工具 ffprobe 简介
  2. 已知两边和夹角求第三边长_数学九年级上册3.4.2节利用两边及夹角判定三角形相似微课视频|知识点...
  3. IOS中的懒加载lazyLoad
  4. android rxbus 一个页面监听,Android RxBus的使用
  5. 前端学习(2964):路由的实现
  6. 炫酷引导页带视频源码
  7. RabbitMQ学习系列(六): RabbitMQ 高可用集群
  8. windows 7下不能使用telnet方法
  9. div+css格式规范
  10. kali安卓手机木马远控
  11. 用Python做一个翻译软件
  12. VS Code Material Icon Theme插件设置自定义文件夹图标关联
  13. Android仿支付宝信用分仪表盘控件
  14. PyQt5自定义无边框窗口
  15. 保存图片到相册并打开微信扫一扫
  16. (Amazon)亚马逊GIF动态验证码识别,95识别率
  17. PC按键精灵读取txt文本出现乱码怎么办?按键精灵手机助手读取txt文本中文变问号怎么办?
  18. 浮生事,何必念念不忘
  19. 测试评审方法---验证与确认
  20. xmind做会议记录的方法

热门文章

  1. mysql8.0.11密码_mysql8.0.11安装和修改密码(转载)
  2. Mosquito的优化——epoll优化(七)
  3. Java 反射 mdc失效,log4j中MDC使用陷阱
  4. Epic Games创始人眼中的虚拟现实
  5. AndroidStudio Git 更改gitlab 地址
  6. Pure公司发布机架规模FlashBlade对象与文件存储方案
  7. 精益 React 学习指南 (Lean React)- 4.1 react 代码规范
  8. error while loading shared libraries: xxx.so.x错误
  9. PyTips 0x03 - Python 列表推导
  10. Microsoft Office Communications Server 2007部署以及客户端安装(详细)【一】