欢迎您来到懒之才-站长的分享平台!   学会偷懒,并懒出境界是提高工作效率最有效的方法!
首页 > 经验分享 > PHP > php操作xml(2)

php操作xml(2)

2018-05-05 495 收藏 0 赞一个 0 真差劲 0 去评论

在上一篇文章中由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

大家评论