我正在进入 XML::Simple 并且在解析一条记录时遇到了 XML::Simple 模块阻塞的问题。perl代码如下......
#!/usr/bin/perl
# use module
use warnings;
use strict;
use XML::Simple;
use Data::Dumper;
# create object
my $xml = new XML::Simple;
# read XML file
my $data = $xml->XMLin("owners.xml");
foreach my $e (@{$data->{Owner}})
{
print $e->{OwnerId}->{OwnerCik}."\n";
print $e->{OwnerId}->{OwnerName}."\n";
print "\n";
}
当我使用这个 XML 时,它工作得很好......
<?xml version="1.0"?>
<ownershipDocument>
<Owner>
<OwnerId>
<OwnerCik>0001234878</OwnerCik>
<OwnerName>PUBLIC JOHN Q</OwnerName>
</OwnerId>
</Owner>
<Owner>
<OwnerId>
<OwnerCik>0001234877</OwnerCik>
<OwnerName>PUBLIC JANE Q</OwnerName>
</OwnerId>
</Owner>
</ownershipDocument>
当我有一个记录时,我有问题......下面的 XML 是一个例子......
<?xml version="1.0"?>
<ownershipDocument>
<Owner>
<OwnerId>
<OwnerCik>0001234878</OwnerCik>
<OwnerName>PUBLIC JOHN Q</OwnerName>
</OwnerId>
</Owner>
</ownershipDocument>
我在解析时得到的错误是......
Not an ARRAY reference at ./so_parse.pl line 14.
我认为解决方案是使用 ForceArray,我将其更改为包含 ForceArray..
my $data = $xml->XMLin("so_single.xml", ForceArray=>1);
现在我得到......
Not a HASH reference at ./so_parse.pl line 16.
诚然,我对复杂的数据结构有点模糊,但我想要解决的是当我们只有一个时如何解析这些所有者。
任何帮助都会很棒!珍妮