php对xml的数组转化
2015-04-10 17:50
567 查看
<?php
$data="<xml>
<field type='int' txt='xxx' name='username' />
<field type='jsonarray' txt='xxx' name='friends'>
<field type='int' txt='xxx' name='tid' />
<field type='string' txt='xxx' name='tname' />
<field type='jsonarray' txt='xxx' name='tcolors'>
<field type='int' txt='xxx' name='thid' />
<field type='string' txt='xxx' name='thname' />
<field type='jsonarray' txt='xxx' name='apple'>
<field type='int' txt='xxx' name='fid' />
<field type='string' txt='xxx' name='fname' />
</field>
</field>
</field>
<field type='string' name='asd' />
<field type='jsonarray' txt='xxx' name='apple1'>
<field type='int' txt='xxx' name='fvid' />
<field type='string' txt='xxx' name='fvname' />
</field>
</xml>";
$p=xml_parser_create();
$xml=xml_parse_into_struct($p,$data,$vals,$index);
xml_parser_free($p);
$arr=array();
foreach($vals as $key=>$vo){
if(!empty($vo['attributes'])&&$vo['level']>1){
$arr[]=$vo;
}
}
$b=array();
$levels=array();
foreach($arr as $k=>$v)
{
if($v['level']==2){
if($v['attributes']['TYPE'] != "jsonarray"){
$b[$v['attributes']['NAME']]=$v['attributes']['TYPE'];
}else{
$b[$v['attributes']['NAME']]=array();
$levels[$v['level']]=$v['attributes']['NAME'];
}
}else{
$plevel=$v['level']-1;
$i=2;
$s ="b['".$levels[$i]."']";
while($i<$plevel) {
$s .="['".$levels[++$i]."']";
}
if($v['attributes']['TYPE'] != "jsonarray"){
$newkey=$v['attributes']['NAME'];
$newval=$v['attributes']['TYPE'];
eval("$".$s."['".$newkey."']='".$newval."';");
}else{
$newkey=$v['attributes']['NAME'];
$newval=$v['attributes']['TYPE'];
eval("$".$s."['".$newkey."']=array();");
$levels[$v['level']]=$newkey;
}
}
}
print_r($b);
$data="<xml>
<field type='int' txt='xxx' name='username' />
<field type='jsonarray' txt='xxx' name='friends'>
<field type='int' txt='xxx' name='tid' />
<field type='string' txt='xxx' name='tname' />
<field type='jsonarray' txt='xxx' name='tcolors'>
<field type='int' txt='xxx' name='thid' />
<field type='string' txt='xxx' name='thname' />
<field type='jsonarray' txt='xxx' name='apple'>
<field type='int' txt='xxx' name='fid' />
<field type='string' txt='xxx' name='fname' />
</field>
</field>
</field>
<field type='string' name='asd' />
<field type='jsonarray' txt='xxx' name='apple1'>
<field type='int' txt='xxx' name='fvid' />
<field type='string' txt='xxx' name='fvname' />
</field>
</xml>";
$p=xml_parser_create();
$xml=xml_parse_into_struct($p,$data,$vals,$index);
xml_parser_free($p);
$arr=array();
foreach($vals as $key=>$vo){
if(!empty($vo['attributes'])&&$vo['level']>1){
$arr[]=$vo;
}
}
$b=array();
$levels=array();
foreach($arr as $k=>$v)
{
if($v['level']==2){
if($v['attributes']['TYPE'] != "jsonarray"){
$b[$v['attributes']['NAME']]=$v['attributes']['TYPE'];
}else{
$b[$v['attributes']['NAME']]=array();
$levels[$v['level']]=$v['attributes']['NAME'];
}
}else{
$plevel=$v['level']-1;
$i=2;
$s ="b['".$levels[$i]."']";
while($i<$plevel) {
$s .="['".$levels[++$i]."']";
}
if($v['attributes']['TYPE'] != "jsonarray"){
$newkey=$v['attributes']['NAME'];
$newval=$v['attributes']['TYPE'];
eval("$".$s."['".$newkey."']='".$newval."';");
}else{
$newkey=$v['attributes']['NAME'];
$newval=$v['attributes']['TYPE'];
eval("$".$s."['".$newkey."']=array();");
$levels[$v['level']]=$newkey;
}
}
}
print_r($b);
相关文章推荐
- php xml字符串转化为 array数组的代码
- 把数组转化成一个xml字符串--php
- 使用 PHP 将 XML 转化为易读的数组!
- php json接口转化为数组 生成xml接口
- xml转化成php数组(文件夹读取,XML解析)
- 使用 PHP 将 XML 转化为易读的数组!
- php数组和xml之间相互转化
- php数组与xml的相互转化
- 使用 PHP 将 XML 转化为易读的数组!
- php中Array2xml类实现数组转化成XML实例
- php 数组 转化 xml 和json 一个class api的福音哈
- 将XML文档内的内容转化为PHP数组
- php实现XML和数组的相互转化功能示例
- php实现数组转化成xml的类
- php xml与数组相互转化
- php中Array2xml类实现数组转化成XML实例
- PHP数组转成XML
- FLEX 数组 转化成 xml
- Php的数组转换成XML(php Array to Xml)
- php 数组转xml 数组转json xml转数组 json转数组