0

我有一个 Perl 类,用于存储树数据结构的节点和弧信息。

当我尝试将其输出为 XML 时,XML::Simple我没有得到数组的完整扩展。

我有

$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' }
);

关于如何扩展数组而不必硬编码您想要的标签的任何想法?

我希望能够从数据结构快速生成 XML。

4

1 回答 1

1

声明

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

标量赋值,其结果是散列元素被设置为各自数组中元素的数量。

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

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

然而这个 XML 结果

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

表明您获得的大小为零,因此数组实际上是空的,这只是故事的一部分。

请显示您的完整代码,以便我们可以看到您哪里出错了。

于 2013-06-12T17:00:50.327 回答