Array to XML:
通过使用PHP的扩展SimpleXML,我们将uses_array转换为xml格式。
保存成功的XML文件:
The users.xml file contains the following xml.
附注:
Insert XML Into Databse
If you want to save the XML into the database, then replace the $xml_file variable line with the following code line. Now you can insert $xml_file variable into the database.
最近公司要做一个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
}
lishixinzhi/Article/program/PHP/201311/20849
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)