如何使用XML :: Simple将数组哈希扩展为XML

时间:2013-06-12 16:10:08

标签: arrays perl

我有一个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' }
);

有关如何扩展阵列的任何想法,而无需硬编码你想要的标签是什么?

我希望能够从数据结构实现动态生成。

1 个答案:

答案 0 :(得分:1)

陈述

$table->{arcs} = @arcs;
$table->{nodes} = @nodes;

标量分配,结果是哈希元素被设置为相应数组中元素数

您应该更改分配以将引用分配给数组,如下所示:

$table->{arcs} = \@arcs;
$table->{nodes} = \@nodes;

然而,这个XML结果

<Root>
  <arcs>0</arcs>
  <nodes>0</nodes>
</Root>

表明你得到的大小是零,所以数组实际上是空的,这只是故事的一部分。

请出示完整的代码,以便我们了解您的错误。