如何使用PHP生成XML文件 由于现在有个项目,需要做接口,必须使用PHP成成XML才能实现对接所以请教大家,如何使用PHP生成XML文件。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 直接输出xml文件里面的内容就可以了。都是文本而已 这是PHP中典型的文件类操作,包括创建、打开、写入、保存等,具体可参考php manual你只要把XML不变的部分做成模板,然后用PHP变量替换改变的部分即可 把数组转化成一个xml字符串--php 一:代码: <?php //************************test***************************$vararray = array( "name" => array("alen", "andy", "tom"), "cuntry" => array("china","japan","english"), "number" => array(1,2,3, array(11,22,33)) ); $pp = toXml($vararray,"gb2312");echo $pp;/** *把给定的数组转化成一个xml字符串** @author [[email protected]]* @param $arrays :要转换的数组* @param $encoding:xml文件的编码* @return string */ function toXml($arrays,$encoding=''){ // 数组检测 if(!is_array($arrays)) { echo "<font color='red'>$arrays is not a array!</font>"; return false; } $xmlstr = ''; // xml文件编码设置 if($encoding=='') { $xmlstr .='<?xml version="1.0" encoding="utf-8" ?>'; } else { $xmlstr .='<?xml version="1.0" encoding="'; $xmlstr .=$encoding; $xmlstr .='" ?>'; } $xmlstr .='<root>'; // 调用遍历数组函数 $xmlstr .= traversal($arrays); $xmlstr .='</root>'; return $xmlstr;}/** *遍历数组,成一个xml片段字符串** @author [[email protected]]* @param $arr :要遍历的数组* @return string */ function traversal($arr){ $arrString = ''; while($newArr = each($arr)) { $arrString .= "<$newArr[0]>"; if(is_array($newArr[1])) { $tempString = traversal($newArr[1]); $arrString .= $tempString; } else { $arrString .= "$newArr[1]"; } $arrString .= "</$newArr[0]>"; } return $arrString;}?>二:执行的结果:(结果已经手动调整,便于观察) <?xml version="1.0" encoding="gb2312" ?><root><name><0>alen</0><1>andy</1><2>tom</2></name><cuntry><0>china</0><1>japan</1><2>english</2></cuntry><number><0>1</0><1>2</1><2>3</2><3> <0>11</0> <1>22</1> <2>33</2></3></number></root>三:备注:注意:xml的标签是以下划线和字母开头的,且不能又xml字样的字符串! 给你提供一个例子http://www.bitfolge.de/rsscreator-en.html这是用来生成rss种子的xml类,你可以参考一下。 哪里有免费开源OA系统吗? 寻求北京的PHP程序员做个小活 xml晕 Zend Optimizer 安装成功,没有起到效果 php乱码怎么解决 请教各位大侠 php sqlite 有没有好的代码下载的 MSYQL 查询排序问题 PHPB2B里电话号码图片化 tp如何把查询出来的数据在作处理 网页文件上传问题 smarty 有问题,请教. linux下mysql安装问题
你只要把XML不变的部分做成模板,然后用PHP变量替换改变的部分即可
一:代码: <?php
//************************test***************************
$vararray = array(
"name" => array("alen", "andy", "tom"),
"cuntry" => array("china","japan","english"),
"number" => array(1,2,3, array(11,22,33))
);
$pp = toXml($vararray,"gb2312");
echo $pp;/**
*把给定的数组转化成一个xml字符串
*
* @author [[email protected]]
* @param $arrays :要转换的数组
* @param $encoding:xml文件的编码
* @return string
*/
function toXml($arrays,$encoding='')
{
// 数组检测
if(!is_array($arrays))
{
echo "<font color='red'>$arrays is not a array!</font>";
return false;
}
$xmlstr = '';
// xml文件编码设置
if($encoding=='')
{
$xmlstr .='<?xml version="1.0" encoding="utf-8" ?>';
}
else
{
$xmlstr .='<?xml version="1.0" encoding="';
$xmlstr .=$encoding;
$xmlstr .='" ?>';
}
$xmlstr .='<root>';
// 调用遍历数组函数
$xmlstr .= traversal($arrays);
$xmlstr .='</root>';
return $xmlstr;
}/**
*遍历数组,成一个xml片段字符串
*
* @author [[email protected]]
* @param $arr :要遍历的数组
* @return string
*/
function traversal($arr)
{
$arrString = '';
while($newArr = each($arr))
{
$arrString .= "<$newArr[0]>";
if(is_array($newArr[1]))
{
$tempString = traversal($newArr[1]);
$arrString .= $tempString;
}
else
{
$arrString .= "$newArr[1]";
}
$arrString .= "</$newArr[0]>";
}
return $arrString;
}
?>二:执行的结果:(结果已经手动调整,便于观察) <?xml version="1.0" encoding="gb2312" ?>
<root>
<name>
<0>alen</0>
<1>andy</1>
<2>tom</2>
</name><cuntry>
<0>china</0>
<1>japan</1>
<2>english</2>
</cuntry><number>
<0>1</0>
<1>2</1>
<2>3</2>
<3>
<0>11</0>
<1>22</1>
<2>33</2>
</3>
</number></root>三:备注:注意:xml的标签是以下划线和字母开头的,且不能又xml字样的字符串!
这是用来生成rss种子的xml类,你可以参考一下。