知识大全 PHP中数组转换为XML格式

Posted

篇首语:书到用时方恨少,事非经过不知难。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 PHP中数组转换为XML格式相关的知识,希望对你有一定的参考价值。

PHP中数组转换为XML格式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  最近公司要做一个API接口 输出格式要有JSON与XML格式 在PHP中 输入JSON直接json_encode就可以 但输出XML没有提供函数 于是决定自己写一个

  <?php

  /**

  * 数组转XML类库

  *

  * @filesource ArrayToXML php

  * @author  genolf

  * @version / /

  *

  * 使用说明

  *  echo ArrayToXml::parse($array root );

  */

  class ArrayToXML

  //文档对象

  private static $doc = NULL;

  //版本号

  private static $version = ;

  /**

  * 初始化文档版本及编码

  *

  * @param string $version   版本号

  * @param string $encoding  XML编码

  */

  public static function init($version $encoding)

  self::$doc = new DomDocument($version $encoding);

  self::$doc >formatOutput = true;

  

  /**

  * 转换数组到XML

  *

  * @param array $array      要转换的数组

  * @param string $rootName  要节点名称

  * @param string $version   版本号

  * @param string $encoding  XML编码

  *

  * @return string

  */

  public static function parse($array $rootName = root $version = $encoding = UTF )

  self::init($version $encoding);

  //转换

  $node = self::convert($array $rootName);

  self::$doc >appendChild($node);

  return self::$doc >saveXML();

  

  /**

  * 递归转换

  *

  * @param array $array      数组

  * @param string $nodeName  节点名称

  *

  * @return object (DOMElement)

  */

  private static function convert($array $nodeName)

  if (!is_array($array)) return false;

  //创建父节点

  $node = self::createNode($nodeName);

  //循环数组

  foreach ($array as $key => $value)

  $element = self::createNode($key);

  //如果不是数组 则创建节点的值

  if (!is_array($value))

  $element >appendChild(self::createValue($value));

  $node >appendChild($element);

   else

  //如果是数组 则递归

  $node >appendChild(self::convert($value $key $element));

  

  

  return $node;

  

  private static function createNode($name)

  $node = NULL;

  //如果是字符串 则创建节点

  if (!is_numeric($name))

  $node = self::$doc >createElement($name);

   else

  //如果是数字 则创建默认item节点

  $node = self::$doc >createElement( item );

  

  return $node;

  

  /**

  * 创建文本节点

  *

  * @param string || bool || integer $value

  *

  * @return object (DOMText || DOMCDATASection );

  */

  private static function createValue($value)

  $textNode = NULL;

  //如果是bool型 则转换为字符串

  if (true === $value || false === $value)

  $textNode = self::$doc >createTextNode($value ? true : false );

   else

  //如果含有HTML标签 则创建CDATA节点

  if (strpos($value < ) > )

  $textNode = self::$doc >createCDATASection($value);

   else

  $textNode = self::$doc >createTextNode($value);

  

  

  return $textNode;

  

cha138/Article/program/PHP/201311/20849

相关参考

知识大全 Jsp结合XML+XSLT将输出转换为Html格式

Jsp结合XML+XSLT将输出转换为Html格式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 PHP生成和获取XML格式数据

PHP生成和获取XML格式数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在做数据接口时我们

知识大全 把图象文件转换成XML格式文件

把图象文件转换成XML格式文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!利用NET框架下的Fr

知识大全 php的数组与字符串的转换函数整理汇总

以下是对php中的数组与字符串的转换函数进行了详细的整理汇总需要的朋友可以参考下   将一个字符串转化为数组str_split()用于将一个字符串转化为数组语法复制代码代码如下:str_sp

知识大全 php 中序列化和json使用介绍

  【序列化的概念】  序列化是将对象状态转换为可保持或可传输的格式的过程与序列化相对的是反序列化它将流转换为对象这两个过程结合起来可以轻松地存储和传输数据  将对象的状态信息转换为可以存储或传输的窗

知识大全 PHP获取数组中重复的元素实例教程

PHP获取数组中重复的元素实例教程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  获取一个数组中

知识大全 学习使用PHP数组

入门教程:学习使用PHP数组  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  PHP中共有超过个新

知识大全 PHP删除数组中特定元素的两种方法

PHP删除数组中特定元素的两种方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!这篇文章介绍了PH

知识大全 PHP新手之学习数组声明

PHP新手之学习数组声明  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!数组是在程序设计中为了处理方

知识大全 php中遍历数组方法

  遍历数组有多种实现方法  连续索引的数组  实现连续数组的遍历很简单因为数组的索引是连续的(……)所以我们可以首先用count()函数计算出数组中元素的个数然后建立一个for循环如下  $subj