解析XML文件
- HTML ?---> RSS源碼,要求解析XML文件,它有是RSS格式的,建議使用tinyXml2解析RSS文件,故要學習tinyXml2,它在github上面。
- 解析 XML 文件,解析 json 數據,是必備技能。
- 在解析xml 文件時,要求提取出標題、鏈接、content、并且刪除文章中的標記語言 ? ----> 這就需要字符串匹配和處理,(一般的自己寫的字符串處理太繁瑣,故要求利用正則表達式進行字符串匹配)?
- 雖然在std :: 標準庫里面也有Regular expressions library 可以處理字符串問題,但是它是源于boost C++庫的,(boost 庫也是值得我們去學習的),在這里建議使用,boost庫里面的regex的一個regex_replace()這個函數處理。其中boost庫是需要在Linux中進行安裝的(這里采取離線安裝)
- RSS文件解析問題解決思路:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?xml -->? rss --> tinyxml2 --> Boost.Regex
tinyXml2 -- https://github.com/leethomason/tinyxml2 rss --- http://www.runoob.com/rss/rss-tutorial.html
- 3. Boost.Regex的使用
6、RSS基本語法、及擴展學習
1、RSS簡介
- RSS 用于在網站間分享信息。需要對下面的知識有基本的了解:HTML / XHTML、XML / XML 命名空間有所了解。
- RSS 被設計用來展示選定的數據。
- 如果沒有 RSS,用戶就不得不每日都來您的網站檢查新的內容。對許多用戶來說這樣太費時了。通過 RSS feed(RSS 通常被稱為 News feed 或 RSS feed),用戶們可以使用 RSS 聚合器來更快地檢查您的網站更新。
2、RSS基本語法
簡單的 RSS 文檔:
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0">
<channel> ? ?? <title>菜鳥教程首頁</title> ? ?? <link>http://www.runoob.com</link> ? ?? <description>免費編程教程</description> ? ?? <item> ? ? ? ? <title>RSS 教程</title> ? ? ? ? <link>http://www.runoob.com/rss</link> ? ? ? ? <description>菜鳥教程 Rss 教程</description> ? ?? </item> ? ?? <item> ? ? ? ? <title>XML 教程</title> ? ? ? ? <link>http://www.runoob.com/xml</link> ? ? ? ? <description>菜鳥教程 XML 教程</description> ? ?? </item> </channel>
</rss>
說明: 文檔中的第一行:XML 聲明 - 定義了文檔中使用的 XML 版本和字符編碼。此例子遵守 1.0 規范,并使用 UTF-8 字符集(可支持中文)。
下一行是標識此文檔是一個 RSS 文檔的 RSS 聲明(此例是 RSS version 2.0)。 下一行含有 <channel> 元素。此元素用于描述 RSS feed。 <channel> 元素有三個必需的子元素:
- <title> - 定義頻道的標題。(比如 菜鳥教程首頁)
- <link> - 定義到達頻道的超鏈接。(比如 www.runoob.com)
- <description> - 描述此頻道(比如 免費編程教程)
每個 <channel> 元素可擁有一個或多個 <item> 元素。 每個 <item> 元素可定義 RSS feed 中的一篇文章或 "story"。 <item> 元素擁有三個必需的子元素:
- <title> - 定義項目的標題。(比如 RSS 教程)
- <link> - 定義到達項目的超鏈接。(比如 http://www.runoob.com/rss)
- <description> - 描述此項目(比如 菜鳥教程 Rss 教程)
最后,后面的兩行關閉 <channel> 和 <rss> 元素。
在 RSS 中書寫注釋的語法與 HTML 的語法類似: ? <!-- 這是一個 RSS 注釋 -->
3、RSS的注意事項
RSS 使用 XML 來編寫
因為 RSS 也是 XML,請記住:
- 所有的元素必許擁有關閉標簽
- 元素對大小寫敏感
- 元素必需被正確地嵌套
- 屬性值必須帶引號
4、RSS <channel> 其他輔助元素
RSS <channel> 元素除了上述三個必備的元素外,還有如下一些較為重要的元素:
- <category> 元素
- <copyright> 元素
- <image> 元素
-
- <url> - 定義引用圖像的 URL
- <title> - 定義圖像無法被顯示時顯示的文本
- <link> - 定義到達提供此頻道的網站的超鏈接
<image> ? ? ? ? ? ?? ? ? ??? ? ? ? ? ? ? ? ? ? ? ? ? ?? <url>http://www.runoob.com/images/logo.png</url> ? <title>菜鳥教程</title> ? <link>http://www.runoob.com</link> </image>
- <language> 元素
5、RSS?<item>其他輔助元素
除了三個必需的子元素:<title> ??<link> ??<description> 外,還有一些輔助元素:
- <comments> 元素
-
- <comments> 子元素允許把一個項目連接到有關此項目的注釋。
- 注釋可能這樣的:
- <comments>http://www.runoob.com/comments</comments>
- <enclosure> 元素
-
- url - 定義指向此媒體文件的 URL
- length - 定義此媒體文件的長度(字節)
- type - 定義媒體文件的類型
- 被包含在項目中的媒體文件可能是這樣的:
- <enclosure url="http://www.runoob.com/rss/rss.mp3"length="5000" type="audio/mpeg" />
總結
- 上一篇: vue组件之间8种组件通信方式总结
- 下一篇: 怎么在ASP.NET 2.0中使用Mem