xml与数组的相互转换——php

xml与数组的相互转换——php

1 xml转换为数组:

a.xml:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <title>
    <arr>
    	<b>
    		<c>我是c</c>
    		<c>我是c</c>
    	</b>
    	<b>我是b</b>
    </arr>
  </title>
</root>

a.php:

<?php
$xml = simplexml_load_file("a.xml");
// xml对象转化为数组
function xml2arr($xml){
	$arr = (array) $xml;
	foreach ($arr as $k => $v) {
		if(is_object($v)||is_array($v)){
			$arr[$k] = xml2arr($v);
		}
	}
	return $arr;
}
$arr = xml2arr($xml);
print_r($arr);
?>

2 数组转化为xml:

<?php
// 数组转化为xml
$a = array(
	'name'=>'su',
	'age'=>22,
	'job'=>array(
		'title'=>'经理',
		'salary'=>888
	),
	'team'=>array('小红','小明')
);
// 转化函数
function arr2xml($arr,$node=null){
	if($node===null){
		$xml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><root></root>');
	}else{
		$xml = $node;
	}
	foreach ($arr as $k => $v) {
		if(is_array($v)){
			// 先把key放上去 再放在key上
			$_k = $xml->addChild($k);
			arr2xml($v,$_k);   //递归
		}elseif(is_string($k)){
			$xml->addChild($k,$v);
			//因为xml的键不能是数字开头 所以遇到key是数字的可以自定义键改变
		}elseif(is_numeric($k)){
			$k = 'item';
			$xml->addChild($k,$v);
		}
	}
	return $xml->saveXML();
}
header('content-type:text/xml');
echo arr2xml($a);
?>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值