【发布时间】:2012-01-15 08:18:21
【问题描述】:
我正在尝试使用 XML::Simple 在 Perl 中解析一些 XML。
XML 遵循以下格式:
<result>
<doc>
<field name="title">Sample Title</field>
<field name="content">Content 1</field>
<field name="content">Content 2</field>
.
.
.
<field name="content">Content n</field>
</doc>
</result>
使用 XML::Simple 我尝试解析并打印标题和所有内容。问题是只打印了最后一个内容项。我决定使用 Dumper,这就是它返回的内容:
$VAR1= {
'result'=> {
'doc' => [
{
'field' => {
'content' => {
'content' => 'Content n'
},
'title' => {
'content' => 'Sample Title'
}
}
}
每个文档元素只显示最后一个内容项。这有什么原因吗?我该怎么做才能让它检测到所有内容项?
编辑:这是代码:
my $url = "http://www.testurl.com/test.xml";
my $content = get $url;
die "Couldn't get XML" unless defined $content;
my $xml = new XML::Simple;
my $xmlData = $xml->XMLin($content);
print Dumper($xmlData);
【问题讨论】:
-
贴出相关代码。特别是 XML::Simple 实例的初始化和打印。
-
好的,我已经添加了代码。内容是存储在内部通过 HTTP 访问的 XML 文件。
-
所以testurl.com/test.xml 指向你的.xml 对吗?
-
我的代码包含实际链接,是的。如果我这样做:打印 $content;整个 XML 文件都被打印出来了,所以获取文件没有问题。只有将它加载到 XML::Simple 中,我才会丢失除最后一个以外的所有内容字段。
标签: xml perl xml-parsing