教程分类

Product category

48_xml&rss

来源:57自学网  浏览次数:次  发布时间:2018-07-11 17:47

  • 优酷播放
  • 腾讯播放
  • 图文解说
第二十九课:XML与RSS
学习目标:
1、熟练掌握使用PHP创建、解析XML文件的一般方法。
2、     熟练掌握RSS2.0、Atom的应用。
 

一、XML

1)XML简介

XML(eXtensible Markup Language,可扩展标记语言)是提供异构平台之间通信的重要通信语言,是不同系统之间数据沟通的桥梁。
XML本质也是一个文本文件,可以理解为一个描述数据结构的实现。
XML用于在一个文档中存储数据,但是数据存储并不是主要的目的,它的主要目的是通过该通用格式标准进行数据交换和传递。
XML支持Unicode编码,可以包含世界各地的任何字符集和二进制数据,并且XML不依赖于任何操作系统平台,是真正的跨平台技术。
XML一般使用UTF-8编码。
 
XML可以适用于:
a.结构化数据,如系统配置文件、邮件地址簿。 //千千静听的配置文件
b.标准数据交换,用于多个平台或应用系统之间的数据传递,如Webservice。
c.应用程序数据的使用,由于XML的出现,越来越多的文字处理程序都开始将原来保存为二进制的数据开始转换使用XML保存文档,如微软的Office 2007等。
d.创建新的标记语言,如现在流行的RSS和Atom,就属于开放的标记语言(Meta Language)。
 
XML一般以一行标准的声明开始:
<?xml version="1.0" encoding="UTF-8"?>
//Mysql_query(“SET NAMES utf8;”);
 
下面是一个简单的XML示例:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<item>
   <book_name>《LAMP之路》</book_name>
   <author>andy</author>
   <other color="red" size="16开">其他</other>
</item>
<page size=”20” /> <br />  <hr />
</root>
其中,root、book_name、author、other称之为元素(子结点),root为根元素(根结点);color="red"、size="16开"称之为属性。
 
XML元素的属性可以具有任意多个属性,惟一的限制是每个属性必须有值。属性值必须用引号包围,单引号或双引号都可以。通常在一个文档中应保持一致。
 
XML元素的规则如下:
1、XML标记必须成对出现,一个是起始标记,一个是结束标记。
2、标记名称是区分大小写的。名称可以包含字母、数字和其他一些字符,但不能包含空格,也不能以XML开头。名称只能以字母或下划线开头。
一般不要用其他特殊字符,和变量的规则相同,一般用小写。
 

2)XML结构与定义

XML有许多部分,但是只需要了解其中的三个就可以了解它是怎样工作的。它们是:文档类型定义(Document Type Definition,DTD),也就是XML的布局语言;
可扩展的样式语言(Extensible Style Language:XSL),也就是XML的样式表语言;
以及可扩展链接语言(Extensible LinkLanguage:XLL)。
 
a.文档类型定义(DTD)
DTD规定文档的逻辑结构。它可以定义文档的语法,而文档的语法反过来能够让XML语法分析程序确认某张页面标记使用的合法性。DTD定义页面的元素、元素的属性以及元素和属性之间的关系。<ivy></ivy>
 
b.可扩展的样式语言(XSL)
XSL是用于规定XML文档样式的语言。
正如XML介于HTML和SGML之间一样,XSL标准介于CSS和SGMI的文档样式语义和规范语言之间。
 
3.可扩展链接语言(XLL)
XLL将支持目前Web上已有的简单链接,并且将进一步扩展链接,包括结束死链接的间接链接以及可以从服务器中仅查询某个元素的相关部分的链接等。
由于XML以SGML为基础,所以XLL基本上是Hytime(超媒体/基于时间的结构语言,IS010744)的一个子集。它还遵循文本编码倡议(TextEncoding Initiative)规定的链接概念。
 

3)XML与XHTML

HTML是一种基本的Web网页设计语言,XHTML是一个基于XML的标志语言。看起来与HTML有些像,只有一些小的但重要的区别。XHTML就是一个扮演着类似HTML角色的XML。所以,XHTML是一个过渡技术,结合了XML的强大功能及HTML的简单特性。
2000年底,国际W3C组织(World Wide Web Consortium)公布发行了XHTML 1.0版本。
与HTML相比,XHTML的特点如下:
1、XHTML解决HTML语言所存在的严重制约其发展的问题。如HTML不支持手持设备,HTML数据与表现混杂,HTML不规范、兼容性差。
2、XML是Web发展的趋势。
3、XHTML能与其他基于XML的标记语言、应用程序及协议进行良好的交互工作。
 
XHTML要求在空元素末尾有一个空格及斜线,XML也是如此。如:
<img title="我爱LAMP" src="91lamp.gif" /> <br />
 

二、创建与解析XML文档

1)创建一个XML文档

参考1.php
注意,在XML中用到一些特殊字符时,应该使用相应的实体。
 
特殊字符 对应的实体
& &amp;
&lt;
&gt;
' &apos;
" &quot;
 

2)XML相关解析方法简介

在PHP5中,主要提供了这几个解析XML的方法:SAX(Simple API for XML)、DOM(Document Object Model)、SimpleXML、XML Reader扩展。
SAX和DOM各自的优点和区别:
a.DOM将XML文档载入到内存中处理,而SAX则相反,它可以检测一个即将到来的XML流,因此并不需要将所有的XML代码同时载入到内存中。
如果你只是想简单地查看XML文档而不处理它,那么请选择使用SAX。
b.DOM是复杂对象处理的首选,比如当XML比较复杂的时候,或者当你需要随机处理文档中数据的时候,SAX从文档的开始通过每一节点移动,以定位一个特定的节点。SAX是一种“更轻巧”的技术——它可以给你的系统带来更轻的负担。
SimpleXML也是一种DOM处理方式。

3)使用SAX解析XML

参考sax1.php

4)使用DOM解析XML

我们看到,仅仅分析一个非常简单的XML/XHTML文件,使用SAX都要花很多工作。而使用DOM的方法则比SAX容易得多。不过也要付出代价——DOM操作比SAX方式比较占内存。
DOM不但可以解析XML,还同样支持对HTML文件的解析。
参考dom1.Php (解析XHTML)
参考dom2.Php (创建一个XML)
参考dom3.Php (解析一个XML)
 

5)SimpleXML

参考simple1.php simple2.php
todo: 自己写一个类,来解析和创建XML
 

三、RSS聚合与解析技术

1)RSS简介

RSS是一种简单格式的XML文档,用于发布和获取网络内容(例如,头条新闻),如常见的博客文章订阅等应用。
RSS缩写方式在英文中有几个源头,并被不同的技术团体做不同的解释。它既可以是“Rich Site Summary”或“RDF Site Summary”,也可以是“Really Simple Syndication”,最后一种应该是贴切的解释。
 
RSS文档的根元素是rss,它包括一个channel元素。channel元素包含关于提要的元数据,如标题、语言和URL,它还包含各种封装的item元素。
每个item都有一个link元素,包括一个URL,还有title或description(通常两者都有)元素,可包含普通文本,注意,RSS并不使用名称空间。
参考: http://kuaiyigang.com/feed.php
 
RSS版本的演变过程像一段小历史,如下所示:
 
RSS版本 开发机构 参考与建议
0.90 网景(Netscape)公司 早期的版本,建议不再使用
0.91 网景 沿承0.9的简单特性,使用者较少
0.92,0.93,0.94 网景 使用较少
1.0 RSSDEV小组(RSSDEV Group) 与0.9x并不兼容。它以RDF为基础,支持扩展并开放标准
2.0 哈佛大学。它与RSS 0.9x兼容 扩展,稳定,推荐使用。支持者包括Yahoo及国内大多数网站
ATOM 1.0 IEITF 开放扩展,自定义,有发展前景。支持者包括Google等
 
如今RSS 2.0已经被哈佛大学以法律途径冻结开发了,原则上不再做大的修改,典型使用的网站有雅虎等门户网站。而Atom也有很多拥护和使用者,其中包括Google Blogger网站。
 
因为Atom还允许用户修改其标准,以后会越来越多人使用。而RSS 2.0为保持其简洁易用的标准,也同样有用户喜欢,我们拭目以待两者的发展。
 
读取RSS数据源很简单,它可以访问特定的URL。国内大部分网站提供的是RSS 2.0。
 

2) RSS 0.9

一个RSS0.9的例子,参考rss0.9.Xml
解析此RSS,参考 rss0.9.Php
 

3)RSS 1.0

一个RSS1.0的例子,参考rss1.0.Xml
解析此RSS,参考 rss1.0.Php
 

4)RSS 2.0

到目前为止,RSS2.0已经出现了一段时日了,并且在国内是普遍采用的标准。
 
RSS 2.0版引入了许多新的元素,诸如下面例子中的<author/>元素,和RSS 1.0一样支持模块化的扩展。
 
由于从RSS 2.0是从RSS 0.91中继承的,保持了它的简单性,同时拥有了与RSS 1.0类似的可扩展性,所以推荐RSS 2.0格式。
 
一个RSS2.0的例子,参考rss2.0.Xml
解析此RSS,参考 rss2.0-1.Php
 

5)Atom

Atom是一种刚登上聚合舞台的新技术。Atom从出现开始就受到了相当多的关注和应用。
 
与RSS不同,Atom具备一个严格的规范。
 
RSS规范存在的一个问题是在其元素中缺少告诉开发人员如何处理HTML标记的信息,而Atom规范则解决了这个问题,并为开发人员指定了严格的、必须遵从的规则,还提供了许多新的功能,可以让开发人员选择元素的内容类型,为某个特定元素指定处理方法的特殊属性。
 
因为基于这些优秀功能,Google和Movable Type等使用Atom的网站都显示出强大的一面。
 
总体而言,Atom还是有些类似RSS,其文档结构有一些区别,它借鉴了各种版本RSS的使用经验,除了元素名不同之外,还包含有命名空间的概念。
 
参考atom.php
 
参考 http://www.googlechinablog.com/atom.xml
 
 
深入学习:
1、XML的原理、结构与定义。可参考XML相关专门的书籍。
 
XML相关站点:
http://www.w3.org/XML/
 
 
 
课后实战:
1、在CMS或博客程序中加上RSS2.0、Atom输出,安装foxmail,订阅RSS。
2、写PHP解析http://rss.sina.com.cn/news/marquee/ddt.xml,分页列出。
3、解析http://xml.weather.yahoo.com/forecastrss?p=CHXX0008&u=c ,显示天气情况。
 
http://weather.raychou.com/?/detail/54511/rss
4、采用DOM解析,获取标题和正文:http://news.163.com/09/0707/02/5DJAK2S00001124J.html
 
参考资料:
http://www.w3school.com.cn/x.asp
腾讯视频客户端(推荐) 手机QQ浏览器(推荐)
本站与腾讯视频合作下载客户端播放视频更高清,无广告,下载更流畅! 本站移动端与QQ浏览器合作,使用QQ浏览器在移动设备上观看教程更清晰流畅、无广告!随时随地学习!