php操作xml(2)
在上一篇文章中由xml和数组之间的转换是没有涉及到xml属性的,只是xml的值和数组之间的转换,那么如果xml中有值也有属性,又该怎么办呢,请看下面的介绍(本文章只介绍xml转换为数组),比如过你的xml为:
<?xml version="1.0" encoding="utf-8"?> <phplamp key="5"> <post key="x"> <title id="1">PHP XML处理介绍一</title> <details>详细内容一</details> </post> <post key="y"> <title id="2">PHP XML处理介绍二 </title> <details key="5">详细内容二 </details> </post> <post key="z"> <title id="3">PHP XML处理介绍三</title> <details>详细内容三</details> </post> </phplamp>
那么该怎么样转换成数组呢,如果还用上一篇文章中的方法就不行了(不过上一篇文章的xml可以用本文章的方法哦)
如果让上面的xml转换成数组,需要用到以下函数
function xml2array($xml) { $arXML=array(); $arXML['name']=trim($xml->getName()); $arXML['value']=trim((string)$xml); $t=array(); foreach($xml->attributes() as$name => $value){ $t[$name]=trim($value); } $arXML['attr']=$t; $t=array(); foreach($xml->children() as$name => $xmlchild) { $t[$name][]=xml2array($xmlchild); } $arXML['children']=$t; return($arXML); }
具体用法代码如下:
$xml = simplexml_load_string($xml); $xmlArr = xml2array($xml); dump($xmlArr);
打印出来$xmlArr的结构如下:
array(4) { ["name"] => string(7) "phplamp" ["value"] => string(0) "" ["attr"] => array(1) { ["key"] => string(1) "5" } ["children"] => array(1) { ["post"] => array(3) { [0] => array(4) { ["name"] => string(4) "post" ["value"] => string(0) "" ["attr"] => array(1) { ["key"] => string(1) "x" } ["children"] => array(2) { ["title"] => array(1) { [0] => array(4) { ["name"] => string(5) "title" ["value"] => string(22) "PHP XML处理介绍一" ["attr"] => array(1) { ["id"] => string(1) "1" } ["children"] => array(0) { } } } ["details"] => array(1) { [0] => array(4) { ["name"] => string(7) "details" ["value"] => string(15) "详细内容一" ["attr"] => array(0) { } ["children"] => array(0) { } } } } } [1] => array(4) { ["name"] => string(4) "post" ["value"] => string(0) "" ["attr"] => array(1) { ["key"] => string(1) "y" } ["children"] => array(2) { ["title"] => array(1) { [0] => array(4) { ["name"] => string(5) "title" ["value"] => string(22) "PHP XML处理介绍二" ["attr"] => array(1) { ["id"] => string(1) "2" } ["children"] => array(0) { } } } ["details"] => array(1) { [0] => array(4) { ["name"] => string(7) "details" ["value"] => string(15) "详细内容二" ["attr"] => array(1) { ["key"] => string(1) "5" } ["children"] => array(0) { } } } } } [2] => array(4) { ["name"] => string(4) "post" ["value"] => string(0) "" ["attr"] => array(1) { ["key"] => string(1) "z" } ["children"] => array(2) { ["title"] => array(1) { [0] => array(4) { ["name"] => string(5) "title" ["value"] => string(22) "PHP XML处理介绍三" ["attr"] => array(1) { ["id"] => string(1) "3" } ["children"] => array(0) { } } } ["details"] => array(1) { [0] => array(4) { ["name"] => string(7) "details" ["value"] => string(15) "详细内容三" ["attr"] => array(0) { } ["children"] => array(0) { } } } } } } } }
你可以自己去分析该数组结构,这里我就不做分析了
附:上面的输出格式是属于一种浏览器友好输出格式,挺方便浏览的,可以作为参考,代码如下:
function dump($var, $echo=true, $label=null, $strict=true) { $label = ($label === null) ? '' : rtrim($label) . ' '; if (!$strict) { if (ini_get('html_errors')) { $output = print_r($var, true); $output = "<pre>" . $label . htmlspecialchars($output, ENT_QUOTES) . "</pre>"; } else { $output = $label . print_r($var, true); } } else { ob_start(); var_dump($var); $output = ob_get_clean(); if (!extension_loaded('xdebug')) { $output = preg_replace("/\]\=\>\n(\s+)/m", "] => ", $output); $output = '<pre>' . $label . htmlspecialchars($output, ENT_QUOTES) . '</pre>'; } } if ($echo) { echo($output); return null; }else return$output; }
一、推荐使用迅雷或快车等多线程下载软件下载本站资源。
二、未登录会员无法下载,登录后可获得更多便利功能,若未注册,请先注册。
三、如果服务器暂不能下载请稍后重试!总是不能下载,请点我报错 ,谢谢合作!
四、本站大部分资源是网上搜集或私下交流学习之用,任何涉及商业盈利目的均不得使用,否则产生的一切后果将由您自己承担!本站将不对任何资源负法律责任.如果您发现本站有部分资源侵害了您的权益,请速与我们联系,我们将尽快处理.
五、如有其他问题,请加网站设计交流群(点击这里查看交流群 )进行交流。
六、如需转载本站资源,请注明转载来自并附带链接
七、本站部分资源为加密压缩文件,统一解压密码为:www.aizhanzhe.com
大家评论
站长推荐
点击排行
- 1CSS控制文字在Div最底部显示
- 2Thinkphp5如何配置IP+端口访问项目模块
- 3elementUI el-dialog弹框居中
- 4教你如何搭建及优化站点
- 5国内互联网视频行业运营分析
- 6service mysql start出错,mysql不能启动,解决mysql: unrecognized service错误
- 7CSS实现悬浮顶部的Div工具栏
- 8记一次Thinkphp5.1框架mysql数据库崩溃(SQLSTATE [08004] Too many connections)
- 9连接SQL Server数据库提示:Login failed for user 'sa'错误的解决方案
- 10Thinkphp3.2在centos7上设置计划任务的方法