解析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的使用
 
     Boost.Regex是Boost中的正则表达式库,它是由John Maddock提供的, 它的文档在:
 
http://www.boost.org/doc/libs/1_62_0/libs/regex/doc/html/index.html

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> 元素
       <category> 子元素用于为 feed 规定种类。
       <category> 子元素使 RSS 聚合器基于类别对网站进行分组成为可能。
     eg:  <category>Web 开发</category>
  • <copyright> 元素
     <copyright> 子元素会告知有关版本资料的信息。
     eg:
<copyright>2006 Refsnes Data as. All rights reserved.</copyright>
  • <image> 元素
<image> 子元素可在聚合器提供某个 feed 时显示一幅图像。
<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> 元素
<language> 子元素用于规定用来编写文档的语言。
<language> 元素使 RSS 聚合器基于语言来对网站进行分组成为可能。
eg:   <language>zh-cn</language>

5、RSS <item>其他辅助元素

除了三个必需的子元素:<title>   <link>   <description> 外,还有一些辅助元素:

  • <comments> 元素
    • <comments> 子元素允许把一个项目连接到有关此项目的注释。
    • 注释可能这样的:
    • <comments>http://www.runoob.com/comments</comments>
  • <enclosure> 元素
     <enclosure> 子元素允许将一个媒体文件导入一个项中。
     <enclosure> 元素有三个必需的属性:
    • url - 定义指向此媒体文件的 URL
    • length - 定义此媒体文件的长度(字节)
    • type - 定义媒体文件的类型
    • 被包含在项目中的媒体文件可能是这样的:
    • <enclosure url="http://www.runoob.com/rss/rss.mp3"length="5000" type="audio/mpeg" />
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

smilejiasmile

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值