php数组转化为xml
array(1) {
["View"]=>
array(2) {
["attr"]=>
array(4) {
["code"]=>
string(15) "SystemInfo_View"
["version"]=>
string(4) "1.00"
["id"]=>
string(0) ""
["description"]=>
string(12) "信息视图"
}
["value"]=>
array(1) {
["System"]=>
array(2) {
["attr"]=>
array(1) {
["type"]=>
string(8) "hardware"
}
["value"]=>
array(4) {
["Classification"]=>
array(2) {
["attr"]=>
string(0) ""
["value"]=>
string(12) "控制设备"
}
["Name"]=>
array(2) {
["attr"]=>
string(0) ""
["value"]=>
string(8) "XX设备"
}
["Manufactyrer"]=>
array(2) {
["attr"]=>
string(0) ""
["value"]=>
string(6) "中国"
}
["Os"]=>
array(2) {
["attr"]=>
array(2) {
["type"]=>
string(3) "Win"
["name"]=>
string(7) "Windows"
}
["value"]=>
string(0) ""
}
}
}
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<ViewPack>
<View code="SystemInfo_View" version="1.00" id="" description="信息视图">
<System type="hardware">
<Classification>控制设备</Classification>
<Name>XX设备</Name>
<Manufactyrer>中国</Manufactyrer>
<Os type="Win" name="Windows"/>
</System>
</View>
</ViewPack>
<?php
/*
<?xml version="1.0" encoding="GBK"?>
<ViewPack>
<View code="SystemInfo_View" version="1.00" id="" description="信息视图">
<System type="hardware">
<Classification>控制设备</Classification>
<Name>XX设备</Name>
<Manufacturer>中国</Manufacturer>
<Os type="Windows" name="Windows Server 2008"/>
</System>
</View>
</ViewPack>
*/
function addConfigAttr($element, $data){
echo "---------------function addConfigAttr()----------\n";
var_dump($element);
var_dump($data);
if($element || $data){
foreach($data as $key=>$value){
$element->addAttribute($key, $value);
}
}
}
function createPack($element, $data=array())
{
echo "---------------function createPack()----------\n";
// var_dump($element);
// var_dump($data);
if($element || $data)
{
if(is_array($data)){
foreach($data as $key=>$value){
echo(is_array($value['value']));
echo(!is_numeric($key));
if(is_array($value['value']) && !is_numeric($key)){ //如果key不是数字,value的value是数组
echo "*11111";
$child = $element->addChild($key); //给simpleXMLElement添加子元素
if($value['attr']){
addConfigAttr($child, $value['attr']);
}
createPack($child, $value['value']); //递归该函数
}elseif(is_array($value) && !isset($value['value'])){
echo "*22222";
foreach ($value as $vk=>$vv){
if(isset($vv['attr'][0])){
foreach ($value['attr'] as $av){
$child = $element->addChild($key);
addConfigAttr($child, $av);
}
}else{
if(is_numeric($vk)) {
if(is_array($vv)) {
foreach($vv as $k1 => $v1) {
$child = $element->addChild($k1);
addConfigAttr($child, $v1['attr']);
}
}
} else {
$child = $element->addChild($vk);
addConfigAttr($child, $vv['attr']);
}
}
createPack($child, $vv['value']);
}
}elseif(empty($value['value']) && $value['attr'][0]){
echo "*33333";
}else{
echo "*44444";
$child = $element->addChild($key, $value['value']); //给节点添加子元素
if($value['attr']){
addConfigAttr($child, $value['attr']); //给子元素添加属性
}
}
}
}
}
}
$config = array('Classification'=>'控制设备','Name'=>'XX设备','Manufacturer'=>'中国', 'osType'=>'Win');
$simpleXML = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><ViewPack></ViewPack>');
$codearr=array();
$codearr['code'] = "SystemInfo_View";
$codearr['version'] = "1.00";
$codearr['id'] = "";
$codearr['description'] = "信息视图";
$systemValue = array();
$systemValue = array('Classification'=>array('attr'=>'', 'value'=>$config['Classification']),
'Name'=>array('attr'=>'', 'value'=>$config['Name']),
'Manufactyrer'=>array('attr'=>'', 'value'=>$config['Manufacturer']),
'Os'=>array('attr'=>array('type'=>$config['osType'], 'name'=>'Windows'), 'value'=>''));
$systemAttr = array('type'=>'hardware');
$viewValue = array('System'=>array('attr'=>$systemAttr, 'value'=>$systemValue));
$ret = array('View'=>array('attr'=>$codearr, 'value'=>$viewValue));
var_dump($ret);
createPack($simpleXML, $ret);
$xml = $simpleXML->asXML();
var_dump($xml);
?>
/*---------------function createPack()----------
array(1) {
["View"]=>
array(2) {
["attr"]=>
array(4) {
["code"]=>
string(15) "SystemInfo_View"
["version"]=>
string(4) "1.00"
["id"]=>
string(0) ""
["description"]=>
string(12) "信息视图"
}
["value"]=>
array(1) {
["System"]=>
array(2) {
["attr"]=>
array(1) {
["type"]=>
string(8) "hardware"
}
["value"]=>
array(4) {
["Classification"]=>
array(2) {
["attr"]=>
string(0) ""
["value"]=>
string(12) "控制设备"
}
["Name"]=>
array(2) {
["attr"]=>
string(0) ""
["value"]=>
string(8) "XX设备"
}
["Manufactyrer"]=>
array(2) {
["attr"]=>
string(0) ""
["value"]=>
string(6) "中国"
}
["Os"]=>
array(2) {
["attr"]=>
array(2) {
["type"]=>
string(3) "Win"
["name"]=>
string(7) "Windows"
}
["value"]=>
string(0) ""
}
}
}
}
}
}
11*11111---------------function addConfigAttr()----------
object(SimpleXMLElement)#2 (0) {
}
array(4) {
["code"]=>
string(15) "SystemInfo_View"
["version"]=>
string(4) "1.00"
["id"]=>
string(0) ""
["description"]=>
string(12) "信息视图"
}
---------------function createPack()----------
11*11111---------------function addConfigAttr()----------
object(SimpleXMLElement)#3 (0) {
}
array(1) {
["type"]=>
string(8) "hardware"
}
---------------function createPack()----------
1*444441*444441*444441PHP Notice: Undefined offset: 0 in /root/桌面/php/6_creact_xml_pack.php on line 69
*44444---------------function addConfigAttr()----------
object(SimpleXMLElement)#5 (0) {
}
array(2) {
["type"]=>
string(3) "Win"
["name"]=>
string(7) "Windows"
}
string(310) "
<?xml version="1.0" encoding="UTF-8"?>
<ViewPack>
<View code="SystemInfo_View" version="1.00" id="" description="信息视图">
<System type="hardware">
<Classification>控制设备</Classification>
<Name>XX设备</Name>
<Manufactyrer>中国</Manufactyrer>
<Os type="Win" name="Windows"/>
</System>
</View>
</ViewPack>
"
*/