php数组转xml文件,PHP中将数组转成XML格式的实现代码

这段代码展示了如何使用PHP将一个多维数组转换为XML格式。提供了两种不同的实现方式:一种使用SimpleXMLElement类,另一种使用DOMDocument。这些函数可以递归地遍历数组并创建XML结构。示例中给出了一个员工数据的数组,通过调用这些函数可以将其转换为XML文档。
摘要由CSDN通过智能技术生成

下面是网上的

class ArrayToXML

{

/**

* The main function for converting to an XML document.

* Pass in a multi dimensional array and this recrusively loops through and builds up an XML document.

*

* @param array $data

* @param string $rootNodeName - what you want the root node to be - defaultsto data.

* @param SimpleXMLElement $xml - should only be used recursively

* @return string XML

*/

public static function toXml($data, $rootNodeName = 'data', $xml=null)

{

// turn off compatibility mode as simple xml throws a wobbly if you don't.

if (ini_get('zend.ze1_compatibility_mode') == 1)

{

ini_set ('zend.ze1_compatibility_mode', 0);

}

if ($xml == null)

{

$xml = simplexml_load_string("<?xml version='1.0' encoding='utf-8'?>");

}

// loop through the data passed in.

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

{

// no numeric keys in our xml please!

if (is_numeric($key))

{

// make string key...

$key = "unknownNode_". (string) $key;

}

// replace anything not alpha numeric

$key = preg_replace('/[^a-z]/i', '', $key);

// if there is another array found recrusively call this function

if (is_array($value))

{

$node = $xml->addChild($key);

// recrusive call.

ArrayToXML::toXml($value, $rootNodeName, $node);

}

else

{

// add single node.

$value = htmlentities($value);

$xml->addChild($key,$value);

}

}

// pass back as string. or simple xml object if you want!

return $xml->asXML();

}

}

下面是我编辑过的代码

function arrtoxml($arr,$dom=0,$item=0){

if (!$dom){

$dom = new DOMDocument("1.0");

}

if(!$item){

$item = $dom->createElement("root");

$dom->appendChild($item);

}

foreach ($arr as $key=>$val){

$itemx = $dom->createElement(is_string($key)?$key:"item");

$item->appendChild($itemx);

if (!is_array($val)){

$text = $dom->createTextNode($val);

$itemx->appendChild($text);

}else {

arrtoxml($val,$dom,$itemx);

}

}

return $dom->saveXML();

}

数组转换成XML格式

$elementLevel = 0 ;

function array_Xml($array, $keys = '')

{

global $elementLevel;

if(!is_array($array))

{

if($keys == ''){

return $array;

}else{

return "\n" . $array . "$keys>";

}

}else{

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

{

$haveTag = true;

if (is_numeric($key))

{

$key = $keys;

$haveTag = false;

}

/**

* The first element

*/

if($elementLevel == 0 )

{

$startElement = "";

$endElement = "$key>";

}

$text .= $startElement."\n";

/**

* Other elements

*/

if(!$haveTag)

{

$elementLevel++;

$text .= "" . array_Xml($value, $key). "$key>\n";

}else{

$elementLevel++;

$text .= array_Xml($value, $key);

}

$text .= $endElement."\n";

}

}

return $text;

}

?>

函数描述及例子

$array = array(

"employees" => array(

"employee" => array(

array(

"name" => "name one",

"position" => "position one"

),

array(

"name" => "name two",

"position" => "position two"

),

array(

"name" => "name three",

"position" => "position three"

)

)

)

);

echo array_Xml($array);

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值