【发布时间】:2010-09-18 18:10:37
【问题描述】:
可能重复:
Why am I getting an “Out of memory” error with Perl's XML::Simple?
我有一个这样的 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 代码来访问 XML 文件中的数据(我应该坚持这种访问格式)
#!/usr/bin/perl
use strict;
use XML::Simple;
my $xml = new XML::Simple;
my $data = $xml->XMLin("uL-DCCH-Message.xml");
my $rrc_trans_identifier = $data->{'c1'}->{'rrcConnectionSetupComplete'}->{'rrc-TransactionIdentifier'};
print "rrc_trans_id :: $rrc_trans_identifier\n";
my $selected_plmn_id = $data->{c1}->{rrcConnectionSetupComplete}->{criticalExtensions}->{c1}->{'rrcConnectionSetupComplete-r8'}->{'selectedPLMN-Identity'};
print "plmn identity :: $selected_plmn_id\n";
my $rrc_dedicated_info_nas = $data->{c1}->{rrcConnectionSetupComplete}->{criticalExtensions}->{c1}->{'rrcConnectionSetupComplete-r8'}->{dedicatedInfoNAS};
print "dedicated info nas :: $rrc_dedicated_info_nas\n";
产生的输出是,
rrc_trans_id :: 2
plmn identity :: 1
dedicated info nas :: 07410109014290112345671000028020000f0
使用 XML::Simple 的 Perl 代码可以很好地处理较小的 XML 文件(如上面的输出所示)。
但如果 XML 文件很大,则 XML::Simple 无法处理,并显示错误消息 Ran out of memory。
我可以使用任何其他 XML 解析器,以便我可以以与上面所示类似的方式访问 XML 文件中的元素吗?
如果有任何其他可用的解析器,任何人都可以按照我对 XML::Simple 遵循的相同约定来举例说明。
【问题讨论】:
-
您已经在stackoverflow.com/questions/3726197/… 提出过这个问题——请重新阅读那里给出的建议。
-
但我问的方式不清楚,这就是为什么我再次询问确切的场景
-
所以编辑您的原始问题以澄清。不要向网站发送垃圾邮件。