php操作xml(2)
来源:互联网 发布:网络活动策划方案 编辑:程序博客网 时间:2024/05/20 12:46
在上一篇文章中由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;}elsereturn $output;}
- php操作xml(2)
- php操作xml,xml 常用
- PHP中的类-操作XML(2)
- php操作xml
- PHP 操作解释XML
- PHP操作XML
- PHP操作xml
- PHP操作XML详解
- php操作xml(1)
- php xml文件操作
- PHP操作XML详解
- php 操作XML
- PHP操作XML文件
- php操作XML
- php操作xml详解
- php操作xml
- php操作xml文件
- php操作xml
- 游戏策划新手指南
- 将数组元素颠倒的java代码
- 采集原理 代码直接可用
- c++中共享内存操作函数MapViewOfFile解析(二)
- jQuery控制元素显示、隐藏、切换、滑动的方法
- php操作xml(2)
- 温家宝历年两会记者会引用古诗文盘点
- PHP实现MVC开发得最简单的方法——单点入口
- ListViewItem的类型
- using_where, Using temporary ,using_filesort 分享
- Jquery AJAX
- 约瑟夫环
- 俄罗斯方块所感
- Oracle Recyclebin