首页 > 解决方案 > 如何在 perl 中使用 XML::Parser 写回 XML?

问题描述

我需要修改一个 XML 文档并将其转储回去。我可以使用 perl 中的 XML::Parser 来执行此操作,但是我找不到将其转储回来的方法。找不到太多关于写回来的东西..

愚蠢的实现之一

use warnings;
use strict;
use XML::Parser;
use Data::Dumper;

sub char_handler
{
        my ($parser, $text) = @_;
        $text = #DO SOMETHING HERE WITH THE TEXT
}

my ($file) = @ARGV;
open(FILE,$file);
$xml=<FILE>;
my $parser = new XML::Parser( Style=>"Tree",
                              Handler => {
                              Char => \&char_handler
                });
my $doc = $parser->parse($xml);

print Data::Dumper->Dump([$doc]);

dumps the XML. 

标签: xmlperlxml-parsing

解决方案


XML::Parser 只是一个解析器,它并不真正用于修改文档并将其保存为 XML。对于这种类型的应用程序,您需要具有某种类型的 DOM(文档对象模型)的模块,该模块可以保留有关文档的足够信息并能够序列化回 XML。

我使用并推荐 XML::LibXML 并编写了一个您可能会觉得有用的教程。

这绝不是唯一的选择,但它是可靠的。它也比 XML::Simple 更简单、更一致(我知道的足够多,可以说不要使用它)。


推荐阅读