PHP 中 XML 通信应用
04 年刚开始工作的时候,那时候是在 .net 平台下进行开发,就接触过 XML 和 WebService 。
用 XML 做配置项和构造树结构, Webservic 主要是做几个跨平台和跨系统的项目整合。
但是当时说实话,就是用,从来没有深究过。
最近又做个一个跨平台多个系统整合项目,不过这次就用 PHP 语言,所以将自己的一点心得写下来,不一定对,就当做自己的日记吧。
第一篇 XML 的简单介绍
XML ( Extensible Markup Language )即可扩展标记语言。 XML 语言是 W3C 组织在 1998 年发布的,当时是 XML1.0 版本。 XML 不是一开始就有的,它的雏形是 IBM 的 GML 标准,后来 ANSI 对其进行整理、规范,发布了 SGML 标准,最终衍生为现在的 XML 标准。(这是顺便说一句 HTML 也是 SGML 衍生过来的)。
XML 本事是一种标记性语言,也是一种简单数据存储语言,通过简单的描述标记数据,接口简单易于掌握。
很多人刚开始接触 XML 或者别人介绍 XML 的时候,都会将其跟很多关系型数据库的数据存储方面进行比较,它没有所有关系型数据库的特性,索引、排序,存储、查找能力也不如其他数据库强。这点确实毋庸置疑,后面会说到如果读取分析一个 20M 的 XML ,那是多么可怕的事情。
XML 与 HTML 比较,也没有什么可比性,虽然他们同出一门。 XML 是用来存储数据, HTML 是用来显示数据的。
它真正的优势应该在跨平台、跨系统的远程服务通信。它是一种公共语言,虽然不同的语言都遵循的一样的标准,虽然说有些描述上有些诧异,但都是符合 W3C 组织的 XML 标准的。
简单的说一下 XML 结构 :
<? xml version="1.0" encoding="UTF-8" ?>
XML 的第一行是 XML 声明,告诉解析器和浏览器,这个文件应该按照前面讨论过的 XML 规则进行解析,它同时还指定 XML 的版本和文件的编码格式。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd" >
XML 的第二行是 DOCTYPE 声明,设定 XML 的根标记 html ,文档类型 PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" ,文档类型有很多种,很多 IDE 工具建立 XML 时都有提示,最后一个是文档类型定义( DTD )。指定的 DTD 文件描述一个文档类型的结构。它可以帮助解析器验证 XML 文件与 DTD 是否标准一致,是否有效。(不写也行,很多解析器都不确认该信息。)
这里说说验证标准,我暂时查到资料有两种,一种是 DTD( 文档类型定义 ) ,还有一种是 schema 模式。 DTD 方式下,通过完全独立的 DTD 文件,不同的互联网厂商或者合作开发伙伴可以通过完全独立的 DTD 文件标准,进行 XML 交互。 XML Schema 是 W3C 的标准,比 DTD 内容更加丰富,逐渐的取代 DTD ,需要的话可以参考 W3C 的教程。
接下来就是 XML 要描述的具体内容了,这里就不多说了,我相信大家都很熟悉了。
多说一下,关于特殊字符在 XML 中应用的问题。 <> 是 XML 中的标记 。如果在文档的实体中想要使用 <> ,用 < 与 > 来代替。其他非 ASCII 的字符也是如此,用( & )开始(;)结束。 http://www.w3.org/TR/REC-html40/sgml/entities.html 中对照表。