我有一个Perl类,它存储树数据结构的节点和弧信息。
当我尝试使用XML::Simple
将其输出为XML时,我无法完全扩展数组。
我有
$table->{arcs} = @arcs;
$table->{nodes} = @nodes;
当我尝试将其输出为XML时,我得到以下输出
<?xml version='1.0'?>
<Root>
<arcs>0</arcs>
<nodes>0</nodes>
</Root>
但信息正确存储在数组中。
以下是我正在使用的代码
my $xml = new XML::Simple(NoAttr => 1, RootName => 'Root', ForceArray => 1);
$xml->XMLout(
$table,
KeepRoot => 1,
OutputFile => $xml_directory . $out_file . ".xml",
XMLDecl => "<?xml version='1.0'?>",
NSExpand => 0,
ValueAttr => { \@node_values => 'node' }
);
有关如何扩展阵列的任何想法,而无需硬编码你想要的标签是什么?
我希望能够从数据结构实现动态生成。
答案 0 :(得分:1)
陈述
$table->{arcs} = @arcs;
$table->{nodes} = @nodes;
是标量分配,结果是哈希元素被设置为相应数组中元素数。
您应该更改分配以将引用分配给数组,如下所示:
$table->{arcs} = \@arcs;
$table->{nodes} = \@nodes;
然而,这个XML结果
<Root>
<arcs>0</arcs>
<nodes>0</nodes>
</Root>
表明你得到的大小是零,所以数组实际上是空的,这只是故事的一部分。
请出示完整的代码,以便我们了解您的错误。