程序生成xml功能

bluefoxn 2009-04-07 01:41:33
/*
程序生成xml功能:
功能描述,通过制定的array,生成出完全类似于http://www.ledinside.com.tw/rss.xml的页面
*/
error_reporting(0); //关闭xdebug
$arr1 = Array(
Array(
"title" => "NIST:改善封裝技術,白光LED效率破記錄",
"link" => "http://www.ledinside.com.tw/1",
"description" => "据日本市调机构富士经济(Fuji Keizai)3月31日公佈的调查报告显示,2008年全球光源市场(包含可视光灯、紫外线灯、LED及半导体激光)规模较2007年下滑了0.6%,降到3兆8,152亿日圆",
"category" => Array(
Array(
"title" => ":全球光源市场下滑,但2012年LED",
"domain" => "http://www.ledinside.com.tw/taxonomy/11",
),
Array(
"title" => "士经济:全球光源市场下滑,但2012年LED需求",
"domain" => "http://www.ledinside.com.tw/taxonomy/11"
)
),
"pubdate" => "Thu, 02 Apr 2009 01:09:28 +00001",
),

Array(
"title" => "LEDinside:今年LED TV渗透率仅2% 至2012年可望达到11",
"link" => "http://www.ledinside.com.tw/2",
"description" => "电视品牌厂商推出LED背光液晶电视,LED TV市场将逐渐成为LED产业杀手级应用之一。LEDinside表示,若所有液晶电视全数导入LED背光, LED消耗数量将比每年10亿支的手机",
"category" => Array(
Array(
"title" => "side:今年LED TV渗透率仅2% ",
"domain" => "http://www.ledinside.com.tw/taxonomy/21",
),
Array(
"title" => "ED TV渗透率仅2% 至2012",
"domain" => "http://www.ledinside.com.tw/taxonomy/22"
)
),
"pubdate" => "Thu, 02 Apr 2009 01:09:28 +00002",
)
);
...全文
90 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluefoxn 2009-04-08
  • 打赏
  • 举报
回复
<?php
/*
程序生成xml功能:
功能描述,通过制定的array,生成出类似于http://www.ledinside.com.tw/rss.xml的页面
*/
error_reporting(0); //关闭xdebug
header('Content-Type: application/xml; charset=utf-8');
$arr1 = Array(
Array(
"title" => "NIST:改善封裝技術,白光LED效率破記錄了",
"link" => "http://www.ledinside.com.tw/1",
"description" => "据日本市调机构富士经济(Fuji Keizai)3月31日公佈的调查报告显示,2008年全球光源市场(包含可视光灯、紫外线灯、LED及半导体激光)规模较2007年下滑了0.6%,降到3兆8,152亿日圆",
"category" => Array(
Array(
"title" => ":全球光源市场下滑,但2012年LED",
"domain" => "http://www.ledinside.com.tw/taxonomy/11",
),
Array(
"title" => "士经济:全球光源市场下滑,但2012年LED需求",
"domain" => "http://www.ledinside.com.tw/taxonomy/12"
)
),
"pubdate" => "Thu, 02 Apr 2009 01:09:28 +00001"
),
Array(
"title" => "LEDinside:今年LED TV渗透率仅2% 至2012年可望达到11",
"link" => "http://www.ledinside.com.tw/2",
"description" => "电视品牌厂商推出LED背光液晶电视,LED TV市场将逐渐成为LED产业杀手级应用之一。LEDinside表示,若所有液晶电视全数导入LED背光, LED消耗数量将比每年10亿支的手机",
/*key*/"category" => Array(//$value
/*key1*/Array(//$value1
"title" => ":全球光源市场下滑,但2012年LED",
"domain" => "http://www.ledinside.com.tw/taxonomy/21",
),
Array(
"title" => "士经济:全球光源市场下滑,但2012年LED需求",
"domain" => "http://www.ledinside.com.tw/taxonomy/22"
)
),
"pubdate" => "Thu, 02 Apr 2009 01:09:28 +00001"
)
);

output_xml($arr1);
function output_xml($arr) {
$xml='';
$haveRightBracket=FALSE;
$xml.="<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n";
$xml.="<rss version=\"2.0\" xml:base=\"http://www.ledinside.com.tw\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\r\n";
$xml.="<channel>\r\n";
$xml.="<title>LEDinside - LED產業網</title>\r\n";
$xml.="<link>http://www.ledinside.com.tw</link>\r\n";
$xml.="<description>LEDinside - LED產業網</description>\r\n";
$xml.="<language>zh-hant</language>\r\n";
foreach($arr as $key=>$value){
$xml.="<item>\n";
$xml.=make($value);
$xml.="</item>\n";
}
$xml.="</channel>\r\n";
$xml.="</rss>\r\n";
echo $xml;
}
function make($array) {
$str='';
foreach($array as $key=>$value){
if(is_array($value)){
foreach($value as $key1=>$value1){
$newarr= newarr($value1);
foreach($newarr as $nkey=>$nvalue){
$str .= '<'. $key;
$str .= " domain=".'"'. $nkey .'"';
$str .= '>'.$nvalue.' ';
$str .= '</'. $key .">\n";
}
}
}else{
$str.= "<$key>".$value."</$key>\n";
}
}
return $str;
}

function newarr($arr1){
$newarr=array();
foreach($arr1 as $v){
$newarr[]=$v;
}
$newa=array($newarr[1]=>$newarr[0]);
return $newa;
}
?>

上面的程序虽然可以达到效果,但我觉得还是不够完善,哪位指点下。。
bluefoxn 2009-04-07
  • 打赏
  • 举报
回复
"category" => Array(
Array(
"title" => "但2012年LED",
"domain" => "http://www.ledinside.com.tw/taxonomy/21",
),
Array(
"title" => "球光源市2年LED需求",
"domain" => "http://www.ledinside.com.tw/taxonomy/22"
)
)

怎么以下方式输出

<category domain='http://www.ledinside.com.tw/taxonomy/21'>但2012年LED</category>
<category domain='http://www.ledinside.com.tw/taxonomy/22'>球光源市2年LED需求</category>


不能用$value['title'],而要以为key来实现。


imqfmqz 2009-04-07
  • 打赏
  • 举报
回复
·双线主机 100M/35元/年,免费送数据库(自选MY/MSSQL)
·支持ASP+ASP.NET+PHP+HTML
·详情请访问:http://www.515dns.com
·QQ:287895593
bluefoxn 2009-04-07
  • 打赏
  • 举报
回复
在http://www.ledinside.com.tw/rss.xml页面源代码可以看到

<category domain="http://www.ledinside.cn/taxonomy/term/772">LED灯具</category>
<category domain="http://www.ledinside.cn/taxonomy/term/518">台湾</category>
<category domain="http://www.ledinside.cn/taxonomy/term/591">雷科</category>

怎么实现这样输出。

最好用递归实现,或用数组的索引 key 实现。

20,374

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧