【问题标题】:How do I parse a file using Perl's XML::SAX?如何使用 Perl 的 XML::SAX 解析文件?
【发布时间】:2011-04-13 15:30:19
【问题描述】:

我正在尝试XML::SAX 解析器来解析 XML 文件。 XML文件如下所示,

            <message>
                <c1>
                    <rrcConnectionSetupComplete>
                        <rrc-TransactionIdentifier>2</rrc-TransactionIdentifier>
                        <criticalExtensions>
                            <c1>
                                <rrcConnectionSetupComplete-r8>
                                    <selectedPLMN-Identity> 1 </selectedPLMN-Identity>
                                    <dedicatedInfoNAS> 07410109014290112345671000028020000f0 </dedicatedInfoNAS>
                                </rrcConnectionSetupComplete-r8>
                            </c1>
                        </criticalExtensions>
                    </rrcConnectionSetupComplete>
                </c1>
            </message>

Perl 代码如下所示,

use strict;

use XML::SAX;
use MySAXHandler;

my $parser = XML::SAX::ParserFactory->parser(Handler => MySAXHandler->new);

$parser->parse_uri("uL-DCCH-Message.xml");

my $rrc_trans_identifier = $parser->{'c1'}->{'rrcConnectionSetupComplete'}->{'rrc-TransactionIdentifier'};
print "rrc_trans_id :: $rrc_trans_identifier\n";

my $selected_plmn_id = $parser->{c1}->{rrcConnectionSetupComplete}->{criticalExtensions}->{c1}->{'rrcConnectionSetupComplete-r8'}->{'selectedPLMN-Identity'};
print "plmn identity :: $selected_plmn_id\n";

my $rrc_dedicated_info_nas = $parser->{c1}->{rrcConnectionSetupComplete}->{criticalExtensions}->{c1}->{'rrcConnectionSetupComplete-r8'}->{dedicatedInfoNAS};
print "dedicated info nas :: $rrc_dedicated_info_nas\n";

当我运行这段代码时,我得到的输出是,

Can't locate MySAXHandler.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at sax.pl line 4.
BEGIN failed--compilation aborted at sax.pl line 4.

我从 CPAN 安装了 XML::SAX,但它仍然显示一些模块丢失错误。

我的问题是,

  1. 是否需要安装其他模块?

  2. 要访问 XML 文件中的值,我遵循的过程是否正确?

例如:

my $rrc_trans_identifier = $parser->{'c1'}->{'rrcConnectionSetupComplete'}->{'rrc-TransactionIdentifier'};
print "rrc_trans_id :: $rrc_trans_identifier\n";

【问题讨论】:

  • 您可能想停下来学习一下 Perl。看来您的所有问题都与复制和粘贴代码示例有关,不了解它们的作用,然后一有问题就在这里问。这不是一个成功的好策略。

标签: xml perl sax


【解决方案1】:

你需要自己写MySAXHandler(线索就在名字里!)。

有关详细信息,请参阅SAX::Intro 文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-27
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    • 2020-03-28
    • 2014-06-26
    相关资源
    最近更新 更多