[Perl]利用XML::DOM生成XML文档

Perl的XML::DOM功能很强大,利用它可以轻易地分析XML文档,也可以建立XML文档。

常用的类包括:

  • XML::DOM::Node:所有类的基类,表示一个XML节点。
  • XML::DOM::Parser:XML解析器,将XML字符串解析成XML::DOM::Document对象。
  • XML::DOM::Document:指向XML文档的根节点。
  • XML::DOM::Element:指向一个元素,通常由XML::DOM::Document->createElement元素生成。

其他的类可以查看CPAN 上关于 XML::DOM 的说明。

建立XML文档的通常做法是:首先通过 XML::DOM::Parser生成一个Document对象, 再通过这个Document对象的 createElement、createTextNode 等方法生成各个节点, 最后通过 XML::DOM::Node->appendChild 方法将节点添加到Document对象中, 最后再通过 toString 方法将 Document 转换为字符串输出。

下面是建立XML文档的一个例子:

#!/usr/bin/perl

use XML::DOM;
use XML::Twig;

# 创建XML的最外层元素
my $xml = "<MyXML/>";

# 通过XML::DOM::Parser解析外层元素,创建基础XML文档
# XML::DOM::Parser::parse函数的返回值为 XML::DOM::Document 类
my $parser = new XML::DOM::Parser;
my $dom = $parser->parse($xml);

# 生成Book节点
# createElement的返回值为 XML::DOM::Element 类
# XML::DOM::Element 的父类是 XML::DOM::Node 类
my $book = $dom->createElement("Book");
# 设置节点属性
$book->setAttribute("title", "My First Book");
$book->setAttribute("author", "charlee");

# 生成Chapter节点
my $chapter = $dom->createElement("Chapter");
$chapter->setAttribute("id", "1");
# 生成一个文本节点
my $title = $dom->createTextNode("My First Chapter");
$chapter->appendChild($title);

# 添加Chapter到Book
$book->appendChild($chapter);

# 添加Book到XML文档
$dom->getDocumentElement->appendChild($book);

# 利用XML::Twig整理格式
my $twig = new XML::Twig;
$twig->set_indent(" "x4);
$twig->parse($dom->toString);
$twig->set_pretty_print("indented");

# 输出
print $twig->sprint;

最后一段使用XML::Twig的程序只是为了整理XML输出结果的格式, 如果不需要整理格式,不调用XML::Twig,直接使用$dom->toString也可以。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值