xml - 如何将参数传递给 XML::SAX 解析器?

标签 xml perl sax

我有一个基于 XML::SAX::Base 的解析器,看起来像这样:

package MyParser;
use base qw(XML::SAX::Base);
our @ISA = ('XML::SAX::Base');

sub new {
    my $class = shift;
    my %params = @_;

    my $self = {
        thing   => $params{thing},
    };
    bless $self, $class;

    return $self;
}

sub start_element {
    my ($self, $data) = @_;
    # Do something useful using $data & $self->{thing}
}
1;

我将它与 XML::SAX::ParserFactory 一起使用:

#!/usr/bin/env perl
use MyParser;

my $parser = XML::SAX::ParserFactory->parser(
                Handler => MyParser->new
            );
$parser->parse_string('<document/>');

有没有办法可以将参数传递给 MyParser 的 new() 子例程?

最佳答案

您的 new 方法已设置为使用 %params 接收参数,因此只需将参数作为哈希传递即可:

my $parser = XML::SAX::ParserFactory->parser(
            Handler => MyParser->new(param1=>$value1, param2=>$value2, ...)
        );

然后在您的 new 方法中,您可以像访问任何其他哈希一样访问参数:

$param1 = $params{param1};
$param2 = $params{param2};
...

关于xml - 如何将参数传递给 XML::SAX 解析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7882011/

相关文章:

javascript - XSLT:提供不同的数据 View

perl - Date::Manip 对象的神秘 perl 未定义值

c# - 如何在 C# 中使用事件驱动的 SAX(用于 XML 的简单 API)解析器,还是使用 System.XML 命名空间更好?

java - 使用java获取XML文件中的所有标签

javascript - 如何通过javascript从没有值的json结构中删除元素?

java - Java 和 Python 之间的 XML 序列化库互操作性

perl - regex/ms 未按预期运行 perl 5.8.8

python - 将 perl soap 应用程序移植到 python

java - Wildfly 10 UnmarshalException 响应中的空日期标签

xml - 嵌套 <xsl :if> & <xsl:when>