2005-12-11

快速开始Perl XML:接口篇

来源: 本站收集整理 作者:佚名 评论 0 条
 

入门简介

最近在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片断:


<?xml version="1.0"?>

<camelids>

  <species name="Camelus dromedarius">

    <common-name>Dromedary, or Arabian Camel</common-name>

    <physical-characteristics>

      <mass>300 to 690 kg.</mass>

      <appearance>

        The dromedary camel is characterized by a long-curved 

        neck, deep-narrow chest, and a single hump.

        ...

      </appearance>

    </physical-characteristics>

    <natural-history>

       <food-habits>

         The dromedary camel is an herbivore.

         ...

       </food-habits>

       <reproduction>

         The dromedary camel has a lifespan of about 40-50 years

         ...

       </reproduction>

       <behavior>

         With the exception of rutting males, dromedaries show

         very little aggressive behavior.

         ...

       </behavior>

       <habitat>

         The camels prefer desert conditions characterized by a

         long dry season and a short rainy season.

         ...

       </habitat>

    </natural-history>

    <conservation status="no special status">

      <detail>

        Since the dromedary camel is domesticated, the camel has

        no special status in conservation.

      </detail>

    </conservation>

  </species>

  ...

</camelids>

现在我们假设此完整文档(可从本月例子代码中获取)包含骆驼家族所有成员的全部信息,而不仅仅是上面的单峰骆驼信息。为了举例说明每一模块是如何从此文件中提取某一数据子集,我们将写一个很简短的脚本来处理camelids.xml文档和在STDOUT上输出我们找到的每一种类的普通名(common-name),拉丁名(用括号包起来),和当前保存状况。因此,处理完整个文档,每一个脚本的输出应该为如下结果:
Bactrian Camel (Camelus bactrianus) endangered 

Dromedary, or Arabian Camel (Camelus dromedarius) no special status 

Llama (Lama glama) no special status 

Guanaco (Lama guanicoe) special concern

Vicuna (Vicugna vicugna) endangered




共4页: 上一页 1 [2] [3] [4] 下一页
(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:hao123站长李兴平的成功史  
下一篇:当客网:我们更注重用户体验
    评论加载中…
 推荐文章
     

网站首页  -  网站地图 -   站长论坛  -  网站投稿  -    -  网站管理
Copyright © 2008 芜湖站长站 All Rights Reserved 皖ICP备07500611号