我无法使用XML :: Simple构建我认为perl中的hashref(href)。 我是新手,所以不知道如何去做,我不能找到很多用数组来构建这个href。我发现的所有例子都是正常的href。
下面的代码输出正确的xml位,但我真的在努力如何为这个href添加更多
由于 达里奥
use XML::Simple;
$test = {
book => [
{
'name' => ['createdDate'],
'value' => [20141205]
},
{
'name' => ['deletionDate'],
'value' => [20111205]
},
]
};
$test ->{book=> [{'name'=> ['name'],'value'=>['Lord of the rings']}]};
print XMLout($test,RootName=>'library');
答案 0 :(得分:2)
要向array-ref'books'添加新哈希,您需要将array-ref转换为数组,然后继续使用它。 @{ $test->{book} }
将array-ref转换为数组。
push @{ $test->{book} }, { name => ['name'], value => ['The Hobbit'] };
答案 1 :(得分:1)
XML::Simple
是一种痛苦,因为你无法确定是否需要数组或散列,并且很难区分元素和属性。
我建议你转移到XML::API
。该程序演示了如何使用它来创建与您自己使用XML::Simple
的程序相同的XML数据。
它有一个优点,因为它在内存中构建了一个正确表示XML的数据结构。可以像这样线性添加数据,也可以在结构中存储书签,然后返回并向以前创建的节点添加信息。
此代码以不同方式添加两个book
元素。第一种是标准方式,其中元素打开,name
和value
元素被添加,book
元素再次关闭。第二个显示了_ast
(抽象语法树)方法,该方法允许您在嵌套数组中传递数据,类似于XML::Simple
中的数据,以简化。此结构要求您使用连字符-
为属性名称添加前缀,以将它们与元素名称区分开来。
use strict;
use warnings;
use XML::API;
my $xml = XML::API->new;
$xml->library_open;
$xml->book_open;
$xml->name('createdDate');
$xml->value('20141205');
$xml->book_close;
$xml->_ast(book => [
name => 'deletionDate',
value => '20111205',
]);
$xml->library_close;
print $xml;
<强>输出强>
<?xml version="1.0" encoding="UTF-8" ?>
<library>
<book>
<name>createdDate</name>
<value>20141205</value>
</book>
<book>
<name>deletionDate</name>
<value>20111205</value>
</book>
</library>