我必须编写一个 Perl 脚本来将 XML 文件转换为 CSV 文件。我已经在一个上下文中编写了一些简单的东西,并且需要针对不同的数据集对其进行增强,并且不知道该怎么做。
我正在使用XML::Simple。
这是数据的一条记录:
<custom-objects xmlns="http://www.demandware.com/xml/impex/customobject/2006-10-31">
<custom-object type-id="emailBackInStockHistory" object-id="bczCAiaag0APcaaacLsvpJRmzW">
<object-attribute attribute-id="email">some@email.com</object-attribute>
<object-attribute attribute-id="emailSentAt">2010-04-10T09:00:01.000+0000</object-attribute>
<object-attribute attribute-id="productID">someprodid</object-attribute>
<object-attribute attribute-id="requestedAt">2010-04-09T10:07:54.000+0000</object-attribute>
<object-attribute attribute-id="siteID">someSITEid</object-attribute>
</custom-object>
</custom-objects>
使用Data::Dumper模块,我看到数据被解析为:
'custom-object' => [
{
'type-id' => 'emailBackInStockHistory',
'object-id' => 'bczCAiaag0APcaaacLsvpJRmzW',
'object-attribute' => [
{
'attribute-id' => 'email',
'content' => 'some@email.com'
},
{
'attribute-id' => 'emailSentAt',
'content' => '2010-04-10T09:00:01.000+0000'
},
{
'attribute-id' => 'productID',
'content' => 'someprodid'
},
{
'attribute-id' => 'requestedAt',
'content' => '2010-04-09T10:07:54.000+0000'
},
{
'attribute-id' => 'siteID',
'content' => 'someSITEid'
}
]
},
这是我尝试用来执行此导出的一些代码:
foreach $o (@{$data->{'custom-object'}}) {
print $o->{'type-id'}, ",";
print $o->{'object-id'}, ",";
print $o->{'custom-object'}->{'object-attribute'}->{'email'}, ",";
print "\n";
type-id
and属性可以正确输出,object-id
但我不知道如何从object-attribute
引用中打印数据。