阿哥论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 264|回复: 0

PHP数组转成XML

[复制链接]

2018

主题

1

好友

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

优秀会员 助人为乐 辛勤工作 技术精英 多才多艺 优秀班竹 灌水天才 星球管理 宣传大使 灌水之王 财富勋章 版主勋章 动漫勋章 勤奋会员 论坛精英 PS高手 心 8 闪游皮肤 双鱼座 8★8➹ 志愿者 乖

发表于 2015-6-8 18:07:42 |显示全部楼层
PHP数组转成XML
网上找的一段代码! 然后我自己更具php DOMDocument又写了一段代码!~~下面是网上的
  1. class ArrayToXML
  2. {
  3.     /**
  4.      * The main function for converting to an XML document.
  5.      * Pass in a multi dimensional array and this recrusively loops through and builds up an XML document.
  6.      *
  7.      * @param array $data
  8.      * @param string $rootNodeName - what you want the root node to be - defaultsto data.
  9.      * @param SimpleXMLElement $xml - should only be used recursively
  10.      * @return string XML
  11.      */
  12.     public static function toXml($data, $rootNodeName = 'data', $xml=null)
  13.     {
  14.         // turn off compatibility mode as simple xml throws a wobbly if you don't.
  15.         if (ini_get('zend.ze1_compatibility_mode') == 1)
  16.         {
  17.             ini_set ('zend.ze1_compatibility_mode', 0);
  18.         }
  19.         
  20.         if ($xml == null)
  21.         {
  22.             $xml = simplexml_load_string("<?xml version='1.0' encoding='utf-8'?><$rootNodeName />");
  23.         }
  24.         
  25.         // loop through the data passed in.
  26.         foreach($data as $key => $value)
  27.         {
  28.             // no numeric keys in our xml please!
  29.             if (is_numeric($key))
  30.             {
  31.                 // make string key...
  32.                 $key = "unknownNode_". (string) $key;
  33.             }
  34.             
  35.             // replace anything not alpha numeric
  36.             $key = preg_replace('/[^a-z]/i', '', $key);
  37.             
  38.             // if there is another array found recrusively call this function
  39.             if (is_array($value))
  40.             {
  41.                 $node = $xml->addChild($key);
  42.                 // recrusive call.
  43.                 ArrayToXML::toXml($value, $rootNodeName, $node);
  44.             }
  45.             else
  46.             {
  47.                 // add single node.
  48.                                 $value = htmlentities($value);
  49.                 $xml->addChild($key,$value);
  50.             }
  51.             
  52.         }
  53.         // pass back as string. or simple xml object if you want!
  54.         return $xml->asXML();
  55.     }
  56. }
复制代码
下面是我自己编辑的代码
  1. function arrtoxml($arr,$dom=0,$item=0){
  2.     if (!$dom){
  3.         $dom = new DOMDocument("1.0");
  4.     }
  5.     if(!$item){
  6.         $item = $dom->createElement("root");
  7.         $dom->appendChild($item);
  8.     }
  9.     foreach ($arr as $key=>$val){
  10.         $itemx = $dom->createElement(is_string($key)?$key:"item");
  11.         $item->appendChild($itemx);
  12.         if (!is_array($val)){
  13.             $text = $dom->createTextNode($val);
  14.             $itemx->appendChild($text);
  15.             
  16.         }else {
  17.             arrtoxml($val,$dom,$itemx);
  18.         }
  19.     }
  20.     return $dom->saveXML();
  21. }
复制代码
摘自:http://www.cnblogs.com/mutuan/archive/2011/08/08/2130564.html
PHP数组转成XML

该会员没有填写今日想说内容.
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

回顶部