[Perl]利用XML::DOM生成XML文档
来源:互联网 发布:2017单片机就业方向 编辑:程序博客网 时间:2024/06/05 22:59
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也可以。
- [Perl]利用XML::DOM生成XML文档
- [Perl]利用XML::DOM生成XML文档
- 利用DOM生成XML文档
- 利用jdom生成xml文档
- 利用DOM来处理XML文档(zz)
- Javascript利用DOM操作XML文档
- 利用php DOM函数库创建xml文档
- 利用DOM解析XML文档实例
- 利用DOM解析XML文档实例
- 利用DOM、SAX技术解析XML文档
- java 利用DOM写入XML文档
- JAVA中利用DOM解析XML文档
- 利用DOM和SAX解析XML文档
- .DOM生成和解析XML文档
- DOM生成和解析XML文档
- DOM生成和解析XML文档
- Dom解析和生成XML文档
- Dom解析和生成XML文档
- Oracle监听程序当前无法识别连接描述符中请求的服务
- 欢迎光临~
- 我的新年愿景
- [Perl]One-Liner
- 从windows xp读取linux ext4分区的文件
- [Perl]利用XML::DOM生成XML文档
- 几种在线可视化HTML编辑器的比较
- POJ 2080 Calendar
- Trac+subversion拥有强大的bug管理能力
- [转]悟透JavaScript
- error C2065: 'WM_SETMESSAGESTRING' : undeclared identifier
- 【转】高级PHP应用程序漏洞审核技术
- 代码之美阅读笔记之--种群计数
- error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用 msvcrtd.lib