編輯:關於Android編程
前言
前幾天去北京面試,題目是讓我解析一下騰訊的Rss。之前雖然知道xml,但是自己從來沒有去學習怎麼解析,在網上查一些例子,但是就是沒有解析出來。現在看看還蠻好笑的,因為我那時候是使用sax解析xml的,可不巧的是讓我解析的xml的encoding是“GBK”,但是sax默認使用utf-8。所以沒有解析出來也不足為奇了。關於如何解決這個問題下面會說。
Rss概念
要在Android平台中開發RSS客戶端,首先需要了解什麼是RSS,RSS怎樣工作,及怎樣解析XML等知識。
首先,我們必須要了解什麼是RSS:
1. RSS指Really Simple Syndication(真正簡易聯合)
2. RSS使您有能力聚合(syndicate)網站的內容
3. RSS定義了非常簡單的方法來共享和查看標題和內容
4. RSS文件可被自動更新
5. RSS允許為不同的網站進行視圖的個性化
6. RSS使用XML編寫
RSS被設計用來展示選定的數據。如果沒有 RSS,用戶就不得不每日都來您的網站檢查新的內容。對許多用戶來說這樣太費時了。通過RSS feed(RSS 通常被稱為 News feed 或 RSS feed),用戶們可以使用 RSS 聚合器來更快地檢查您的網站更新(RSS 聚合器是用來聚集並分類 RSS feed 的網站或軟件)。由於RSS 數據很小巧並可快速加載,它可輕易地被類似移動電話或 PDA 的服務使用。擁有相似內容的網站環(Web-rings)可以輕易地在它們的網站共享內容,使這些網站更出色更有價值。
誰應當使用RSS?
那些極少更新內容的網管們不需要RSS!
RSS對那些頻繁更新內容的網站是很有幫助的,比如:
新聞站點 列出新聞的標題、日期以及描述
企業 列出新聞和新產品
日程表 列出即將來臨的安排和重要日期
站點更新 列出更新過的頁面或新的頁面
RSS如何工作
使用RSS,您在名為聚合器的公司注冊您的內容。
步驟之一是,創建一個RSS 文檔,然後使用.xml 後綴來保存它。然後把此文件上傳到您的網站。接下來,通過一個RSS 聚合器來注冊。每天,聚合器都會到被注冊的網站搜索RSS文檔,校驗其鏈接,並顯示有關 feed 的信息,這樣客戶就能夠鏈接到使他們產生興趣的文檔。
一個RSS實例文檔
RSS文檔使用一種簡單的自我描述的語法: 讓我們看一個簡單的RSS文檔:
[java]
<?xml version="1.0" encoding="ISO-8859-1" ?>
<rss version="2.0">
<channel>
<title>W3School Home Page</title>
<link>http://www.w3school.com.cn</link>
<description>Free web building tutorials</description>
<item>
<title>RSS Tutorial</title>
<link>http://www.w3school.com.cn/rss</link>
<description>New RSS tutorial on W3School</description>
</item>
<item>
<title>XML Tutorial</title>
<link>http://www.w3school.com.cn/xml</link>
<description>New XML tutorial on W3School</description>
</item>
</channel>
</rss>
<?xml version="1.0" encoding="ISO-8859-1" ?>
<rss version="2.0">
<channel>
<title>W3School Home Page</title>
<link>http://www.w3school.com.cn</link>
<description>Free web building tutorials</description>
<item>
<title>RSS Tutorial</title>
<link>http://www.w3school.com.cn/rss</link>
<description>New RSS tutorial on W3School</description>
</item>
<item>
<title>XML Tutorial</title>
<link>http://www.w3school.com.cn/xml</link>
<description>New XML tutorial on W3School</description>
</item>
</channel>
</rss> 文檔中的第一行:XML聲明 - 定義了文檔中使用的XML 版本和字符編碼。此例子遵守1.0規范,並使用ISO-8859-1 (Latin-1/West European) 字符集。
下一行是標識此文檔是一個RSS文檔的RSS 聲明(此例是 RSS version 2.0)。
下一行含有 <channel> 元素。此元素用於描述RSS feed。
<channel> 元素有三個必需的子元素:
<title> - 定義頻道的標題。(比如 w3school 首頁)
<link> - 定義到達頻道的超鏈接 <description> - 描述此頻道(比如免費的網站建設教程)
每個<channel>元素可擁有一個或多個 <item> 元素。
每個<item>元素可定義 RSS feed 中的一篇文章或 "story"。
<item> 元素擁有三個必需的子元素:
<title> - 定義項目的標題。(比如 RSS 教程)
<link> - 定義到達項目的超鏈接 <description> - 描述此項目(比如 w3school 的RSS 教程)
最後,後面的兩行關閉 <channel> 和 <rss> 元素。
上面的只是是一個例子,下面來看一下實際應用的Rss:
[java]
?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet type="text/xsl" href="/css/rss_xml_style.css"?>
<rss version="2.0">
<channel>
<title>新聞國內</title>
<image>
<title>新聞國內</title>
<link>http://news.qq.com</link>
<url>http://mat1.qq.com/news/rss/logo_news.gif</url>
</image>
<description>新聞國內</description>
<link>http://news.qq.com/china_index.shtml</link>
<copyright>Copyright 1998 - 2005 TENCENT Inc. All Rights Reserved</copyright>
<language>zh-cn</language>
<generator>www.qq.com</generator>
<item>
<title>浙江溫州泰順廣播電視台原台長受賄獲刑十年</title>
<link>http://news.qq.com/a/20130608/012227.htm</link>
<author>www.qq.com</author>
<category/>
<pubDate>2013-06-08 12:05:21</pubDate>
<comments/>
<description> 中新網溫州6月8日電(記者趙小燕通訊員晨翔)利用擔任廣播電視台台長的職務便利,在產品采購、干部任用、人事調動、人事招錄等方面為他人謀取利益,先後收受許某某等人所送共計284200元。近日,溫州泰順縣人民法院以受賄罪判處被告人張某某有期徒刑十年,並處沒收財產30000元;沒收被告人張某某受賄違法所得284200元,上</description>
</item>
<item>
<title>河南新蔡回應開發商違規 對外界質疑只字不提</title>
<link>http://news.qq.com/a/20130608/012148.htm</link>
<author>www.qq.com</author>
<category/>
<pubDate>2013-06-08 11:59:42</pubDate>
<comments/>
<description>中新網駐馬店6月8日電(記者侯偉勝)本網對河南省新蔡縣“城市1號工程”偉利國際廣場在征地、施工、銷售等環節涉嫌違規一事進行報道後,引起廣泛關注。6月7日下午,新蔡縣國土局以電子郵件的形式對報道內容進行了說明。但是對於群眾最為關注的幾點質疑,卻只字未提。偉利國際廣場是駐馬店市、新蔡縣重點招商引資項目,新蔡縣</description>
</item>
<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet type="text/xsl" href="/css/rss_xml_style.css"?>
<rss version="2.0">
<channel>
<title>新聞國內</title>
<image>
<title>新聞國內</title>
<link>http://news.qq.com</link>
<url>http://mat1.qq.com/news/rss/logo_news.gif</url>
</image>
<description>新聞國內</description>
<link>http://news.qq.com/china_index.shtml</link>
<copyright>Copyright 1998 - 2005 TENCENT Inc. All Rights Reserved</copyright>
<language>zh-cn</language>
<generator>www.qq.com</generator>
<item>
<title>浙江溫州泰順廣播電視台原台長受賄獲刑十年</title>
<link>http://news.qq.com/a/20130608/012227.htm</link>
<author>www.qq.com</author>
<category/>
<pubDate>2013-06-08 12:05:21</pubDate>
<comments/>
<description> 中新網溫州6月8日電(記者趙小燕通訊員晨翔)利用擔任廣播電視台台長的職務便利,在產品采購、干部任用、人事調動、人事招錄等方面為他人謀取利益,先後收受許某某等人所送共計284200元。近日,溫州泰順縣人民法院以受賄罪判處被告人張某某有期徒刑十年,並處沒收財產30000元;沒收被告人張某某受賄違法所得284200元,上</description>
</item>
<item>
<title>河南新蔡回應開發商違規 對外界質疑只字不提</title>
<link>http://news.qq.com/a/20130608/012148.htm</link>
<author>www.qq.com</author>
<category/>
<pubDate>2013-06-08 11:59:42</pubDate>
<comments/>
<description>中新網駐馬店6月8日電(記者侯偉勝)本網對河南省新蔡縣“城市1號工程”偉利國際廣場在征地、施工、銷售等環節涉嫌違規一事進行報道後,引起廣泛關注。6月7日下午,新蔡縣國土局以電子郵件的形式對報道內容進行了說明。但是對於群眾最為關注的幾點質疑,卻只字未提。偉利國際廣場是駐馬店市、新蔡縣重點招商引資項目,新蔡縣</description>
</item> 後面省略了很多item,大體看一下結構就可以。
RSS中的注釋
在RSS 中書寫注釋的語法與HTML 的語法類似:
<!-- This is an RSS comment -->
RSS使用XML來編寫
因為RSS也是XML,請記住:
1. 所有的元素必許擁有關閉標簽
2. 元素對大小寫敏感
3. 元素必需被正確地嵌套
4. 屬性值必須帶引號
如果移動設備的天下,無論是網購,看新聞等等,都在手機上完成,那麼我們在手機版的微信公眾號上看到好的視頻下載到手機上呢?微信公眾號上的視頻怎麼下載到本地呢?下
沉浸體驗是VR的核心也是一直以來的技術難點,虛擬現實的發展一直專注於怎樣讓用戶獲得更好的沉浸式體驗,這涉及到多個領域的多項技術,上至渲染優化,性能優化,下至人眼的構造,肢
在工作中,曾多次碰到ScrollView嵌套ListView的問題,網上的解決方法有很多種,但是雜而不全。我試過很多種方法,它們各有利弊。 在這裡我將會從使用Sc
簡述Qt Network 模塊中提供了一些高級別的類,例如:QNetworkRequest、QNetworkReply 和 QNetworkAccessManager,使