perl开发xml
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Perl 为 XML 开发人员提供了一套非常丰富的模块和库,足以与其它语言相媲美。Perl 社区早期曾快速开发出 XML 工具。Perl/XML 社区现在仍保持着相当的活力,它不仅以惊人地速度支持新的协议和标准,还在 XML 的常规发展中起到了
积极作用。Perl 的可扩展性使 C 和 C++ 模块能够简便地集成到 Perl 框架中,从而提供了一种速度和易用性的组合。
下列工具是我从开发 Perl/XML 工具和应用程序的经历中选出的比较中意的工具,也有从各种邮递列表、杂志和 Web 页面中收集的广受欢迎的工具。这些工具将帮助您立即开发专业的基于 XML 的应用程序。
语法分析器和对象模型
从 XML 早期开始,XML 语法分析器就已经可用于 Perl。XML::Parser 模块是一个用于 James Clark 的出色的 expat 语法分析器的 Perl 接口,它是大多数其它分析和操纵模块的基础。XML::Simple 为简单的 XML 文件提供了一个直观的
纯 Perl 语法分析器,而且大多数分析模块都支持 SAX API。
Perl 还对各种 XML 对象模型(包括 DOM、Grove 和 Twig)有很好的支持。各
种各样的软件包提供了 DOM 或类似 DOM 的处理选项,包括纯 Perl XML::DOM 模型、XML::LibXML、XML::XPath、Orchard 和即将发行的 Sablotron::DOM 软
件包。通过 Grove、Twig 和 PYX 模型,也可使用备用的处理模型。Twig 对大型文档尤其有用,它允许处理文档的各个段而无需对整个文档进行分析。
回页首
XML 转换器、编写器和读取器
Perl 因其在与各种类型的旧有系统的连接中拥有丰富的选项而闻名。利用这些连接和将 Perl 数据结构转换成 XML 的设施,Perl 成为一个为现有系统创建XML 接口的出色平台。诸如 XML::Edifact、DBIx::XML_RDB、XML::CSV、XML::Generator、XML::Dumper 和 XML::Writer 等扩展都可以对 Perl 数据结构、XML 和其它格式之间的数据进行各个方面的序列化和非序列化处理。
回页首
协议和库
通常,Perl 会迅速支持新的协议和标准。对于 SOAP、WDDX、RSS、XML-RPC 和Microsoft 的 BizTalk 都有扩展。
回页首
商业产品
大多数 Perl 扩展都在开发源码的模型下享有社区支持。Perl 的商业系统和软件包支持比 Java 等语言的系统和软件包要少得多。
VelociGen XML Server 是一种商业产品(出自我工作的公司),它使用 Perl 作为一种交换和处理 XML 文档并创建基于 Web 服务的应用程序的语言。 Open Source Axkit 也使用了商业支持,它使用 XML 提供 Web 发布和内容管理。
回页首
样式表和查询语言
XML 已有一套查询和变换数据的相关标准。其中两个最常用的是:“可扩展样式表语言变换 (XSLT)”和“XML 路径语言 (XPath)”。 XPath 提供了一种公共语法和功能来寻址和搜索 XML 文档各个部分。XSLT 使用 XPath 来实现 XML 文档到其它 XML 文档的变换。
回页首
数据库接口
Perl 长期以来一直通过 DBD/DBI 模块享有卓越的数据库支持。DBIx::XML_RDB 使用这些模块构建所有流行数据库的 XML 封装器。XML::CSV 为以文本分隔的文件(如通用的以逗号分隔的值和以制表符定界的格式)提供了类似支持。
入门简介
最近在Perl-XML邮件组经常问起的问题是如何给不熟悉的用户一个对大量 Perl XML 模块的快速指引性概述文档。在接下来的几个月里我将单独对此问题写几篇专栏文章。
CPAN上的XML模块可以分成三大类:对XML 数据提供独特的接口(通常有关在XML实例和Perl数据之间的转换),实现某一标准XML API的模块,和对一些特定的XML相关任务进行简化的特殊用途模块。这个月我们先关注第一个,XML Perl专用接口。
use Disclaimer qw(:standard);
此文档不是为了对模块性能进行基准测试,我的目的也不是暗示某一模块比另一个模块更有用。为你的项目选择正确的 XML 模块更多依赖于项目本身和你积累的经验。不同的接口适应于不同的任务和不同的人。我的唯一目的是通过定义两个简单的任务,然后提供不同借口的可运行例子来显示如何获得同样的最终结果。
任务
虽然XML的用途非常多,但大部分XML相关任务可分成两组:一是从已有的XML文档提取数据,另一个是使用其他资源的数据创建一个新的XML文档。既然如此,我们所用来介绍不同模块的例子将由“从一个XML文件中提取某一特定数据集”和“将一Perl 数据结构转为某一特定XML格式”组成。
任务一:提取数据
首先,假设有如下XML片断:
The dromedary camel is characterized by a long-curved
neck, deep-narrow chest, and a single hump.
...