数组转XML
//数组转xml
function ArrToXml($arr)
{
if(!is_array($arr) || count($arr) == 0) return '';
$xml = "<xml>";
foreach ($arr as $key=>$val)
{
if (is_numeric($val)){
$xml.="<".$key.">".$val."</".$key.">";
}else{
$xml.="<".$key."><![CDATA[".$val."]]></".$key.">";
}
}
$xml.="</xml>";
return $xml;
}
数组转xml
public function arrayToXml($arr){
$xml = "<xml>";
foreach ($arr as $key=>$val) {
if (is_numeric($val)){
$xml.="<".$key.">".$val."</".$key.">";
}else{
$xml.="<".$key."><![CDATA[".$val."]]></".$key.">";
}
}
$xml.="</xml>";
return $xml;
}
一维数组转换为XML数据
<?php
/**
* 一维数组转xml
* @author webbc
*/
$arr = array(
'name' => 'webbc',
'age' => '22',
);//要转换的数组
//转换函数
function arr2xml($arr){
$simxml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><root></root>');//创建simplexml对象
//遍历数组,循环添加到root节点中
foreach($arr as $k=>$v){
$simxml->addChild($k,$v);
}
//返回xml数据
header('Content-type:text/xml;charset=utf-8');
return $simxml->saveXML();
}
echo arr2xml($arr);//输出到浏览器
?>
多维数据转换为XML
<?php
/**
* 多维数组转xml
* @author webbc
*/
$arr = array(
'name' => 'webbc',
'age' => '22',
'job' => array(
'title' => '销售经理',
'salary' => '12K',
'team' => array('小明','小华','小林')
)
);//要转换的多维数组信息
//转换函数
function arr2xml($arr,$parentNode=null){
//如果父节点为null,则创建root节点,否则就使用父节点
if($parentNode === null){
$simxml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><root></root>');
}else{
$simxml = $parentNode;
}
//遍历数组
foreach($arr as $k=>$v){
if(is_array($v)){//如果是数组的话则继续递归调用,并以该键值创建父节点
arr2xml($v,$simxml->addChild($k));
}else if(is_numeric($k)){//如果键值是数字,不能使用纯数字作为XML的标签名,所以此处加了'item'字符,这个字符可以自定义
$simxml->addChild('item'.$k,$v);
}else{//添加节点
$simxml->addChild($k,$v);
}
}
//返回数据
header('Content-type:text/xml;charset=utf-8');
return $simxml->saveXML();
}
echo arr2xml($arr);//输出
?>
XML转数组
//Xml转数组
function XmlToArr($xml)
{
if($xml == '') return '';
libxml_disable_entity_loader(true);
$arr = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
return $arr;
}
xml转数组
public function xmlToArray($xml){
//禁止引用外部xml实体
libxml_disable_entity_loader(true);
$values = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
return $values;
}
xml_parse_into_struct() 函数把 XML 数据解析到数组中。
该函数把 XML 数据解析到 2 个数组中:
Value 数组 - 包含来自被解析的 XML 的数据
Index 数组 - 包含指向 Value 数组中值的位置的指针
如果成功,该函数则返回 1。如果失败,则返回 0。
语法
xml_parse_into_struct(parser,xml,value_arr,index_arr)
XML 文件
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
PHP 代码
<?php
//invalid xml file
$xmlfile = 'test.xml';
$xmlparser = xml_parser_create();
// open a file and read data
$fp = fopen($xmlfile, 'r');
$xmldata = fread($fp, 4096);
xml_parse_into_struct($xmlparser,$xmldata,$values);
xml_parser_free($xmlparser);
print_r($values);
?>
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。