2、RSS格式參考模板php
1 <?xml version="1.0" encoding="utf-8" ?> 2 3 <rss version="2.0" xmlns:wfw="http://wellformedweb.org/CommentAPI/"> 4 5 <channel> 6 7 <title>標題></title> 8 9 <link>連接地址</link> 10 11 <description>描述</description> 12 13 <language>描述語言</language> 14 15 <copyright>版本</copyright> 16 17 <pubDate>21 Oct 2008 01:43:15 GMT</pubDate> 18 19 < item> 20 21 <title>日誌的標題1</title> 22 23 <link>日誌的URL訪問地址</link> 24 25 <author>日誌的做者</author> 26 27 <pubDate>日誌的發佈日期</pubDate> 28 29 <description>日誌的內容</description> 30 31 </item> 32 33 < item> 34 35 <title>日誌的標題2</title> 36 37 <link>日誌的URL訪問地址</link> 38 39 <author>日誌的做者</author> 40 41 <pubDate>日誌的發佈日期</pubDate> 42 43 <description>日誌的內容</description> 44 45 </item> 46 47 </channel> 48 49 </rss>
3、RSS錯誤分析html
(1)首先咱們編寫一個RS模板 template.xml,以下:mysql
<?xml version="1.0" encoding="utf-8"?>web
<rss version="2.0" xmlns:wfw="http://wellformedweb.org/CommentAPI/"></rss>sql
(2):編寫好模板,咱們就能夠正式開發RS訂閱源類了 feed_class.php,代碼以下:數據庫
(3)好了,此時,咱們完成了 RSS模板 和 RSS類的開發,開啓Apache 服務器,在瀏覽器上運行咱們的feed_class.php,結果圖以下:
正常的結果以下:
在未安裝RSS閱讀器上,顯示的是xml文件代碼,結果去下:好比說GOOGLE的Chrome(解決的辦法很簡單,安裝RSS閱讀器插件便可)
編程
1 <?php 2 3 //鏈接數據庫,動態生成RSS feed 4 //鏈接數據庫,取得最新的10條商品,輸出XML feed 5 6 class feed_class{ 7 8 public $title = ''; //channel的title 9 public $link = ''; //channel的link 10 public $description = ''; //channel的description 11 public $itemlist = array(); 12 13 public $template = ''; //xml模板 14 protected $dom = null; 15 protected $rss = null; 16 protected $channel = null; 17 18 public function __construct(){ 19 $this->dom = new DomDocument("1.0","utf-8"); 20 $this->dom->load('./template.xml'); 21 $this->dom->formatOutput = true; 22 $this->rss = $this->dom->getElementsByTagName('rss')->item(0); 23 } 24 25 //調用createItem,把全部的item節點生成,再輸出 26 public function display(){ 27 $this->createChannel(); 28 $this->addItem($this->itemlist); 29 header('content-type: text/xml'); 30 echo $this->dom->saveXML(); 31 //$this->dom->save('01.xml'); //如需將代碼保存,則打開此語句 32 } 33 34 //封裝createChannel方法,用於建立RSS惟一且必須的channel節點 35 protected function createChannel(){ 36 $channel = $this->dom->createElement('channel'); 37 $channel->appendChild($this->createEle('title',$this->title)); 38 $channel->appendChild($this->createEle('link',$this->link)); 39 $channel->appendChild($this->createEle('description',$this->description)); 40 $this->channel = $channel; 41 $this->rss->appendChild($channel); 42 } 43 44 //封裝addItem方法,把全部的商品增長到RSS中去 45 //$list是商品列表,是二維數組,每一行都是一個商品 46 public function addItem($list){ 47 foreach($list as $goods){ 48 $this->channel->appendChild($this->createItem($goods)); 49 } 50 } 51 52 //封裝一個類用於造Item 53 protected function createItem($arr){ 54 $item = $this->dom->createElement('item'); 55 foreach($arr as $k=>$v){ 56 $item->appendChild($this->createEle($k,$v)); 57 } 58 return $item; 59 } 60 61 //快速建立節點 相似:<name>lover雪</name> 62 public function createEle($name,$value){ 63 $ele = $this->dom->createElement($name); 64 $text = $this->dom->createTextNode($value); 65 $ele->appendChild($text); 66 67 return $ele; 68 } 69 70 71 } 72 //鏈接數據庫 73 $conn = mysql_connect('localhost','root',''); 74 75 76 mysql_query('set names utf8',$conn); 77 mysql_query('use boolshop1'); 78 79 80 81 $sql = "select goods_name as title,goods_brief as description from goods order by add_time asc limit 10"; 82 $rs = mysql_query($sql,$conn); 83 84 85 $list = array(); 86 while($row = mysql_fetch_assoc($rs)){ 87 $list[] = $row; 88 } 89 90 $feed1 = new feed_class(); 91 $feed1->title = "布爾商城"; 92 $feed1->link = "http://127.0.0.1/boolshop/"; 93 $feed1->description = "這個一個好商城"; 94 $feed1->itemlist = $list; 95 96 $feed1->display(); 97 98 ?>
5、總結
RSS 決不是一個完美的格式,可是它如今已經很是流行,並獲得普遍的支持。要成爲一個固定的規範,RSS須要很長的一段時間。
編寫RSS的xml文件時,因爲瀏覽器的嚴格解析模式,一旦出現一點點錯誤,都不會顯示任何效果,此時須要足夠的耐心去找到錯誤,而且修正它,
須特別注意,在RSS代碼前不得有任何的文字或者其餘信息輸出,一旦把這點忘記了,你纔會明白,這個錯誤查找起來是有多麼痛苦(由於本人就是犯了這個錯誤,花了一個上午不斷的在調試,過程很痛苦,由於代碼根本就沒錯,也就是說根本就無法查錯,有點相似感慨是接觸編程時的邏輯錯誤,無法查)。
數組