如何使用Perl的XML :: Simple模块对键值对进行编码?

时间:2011-04-21 13:19:03

标签: perl xml-simple

我有一个表格哈希

my $hash = {
    'Key' => "ID1",
    'Value' => "SomeProcess"
};

我需要将其转换为

形式的XML片段
<Parameter key="ID1">Some Process a</Parameter> 
<Parameter key="ID2">Some Process b</Parameter> 
<Parameter key="ID3">Some Process c</Parameter>

如何做到这一点?

1 个答案:

答案 0 :(得分:3)

首先,您的示例不是有效的XML 文档,因此XML :: Simple需要一些陪审团操纵才能输出它。它似乎期望输出文档,而不是那么多片段。但我能够用这种结构生成输出:

my $xml
    = {
        Parameter => [
          { key => 'ID1', content => 'Some Process a' }
        , { key => 'ID2', content => 'Some Process b' }
        , { key => 'ID3', content => 'Some Process c' }
        ]
    };


print XMLout( $xml, RootName => '' ); # <- omit the root

请记住,XML :: Simple将无法再读取它。

这是输出:

  <Parameter key="ID1">Some Process a</Parameter>
  <Parameter key="ID2">Some Process b</Parameter>
  <Parameter key="ID3">Some Process c</Parameter>

因此,如果您可以将结构放入我向您展示的表单中,您就可以使用RootName => ''参数打印出您的片段。

所以,考虑到你的格式,这样的事情可能有用:

$xml = { Parameter => [] };
push( @{ $xml->{Parameter} }
    , { key => $hash->{Key}, content => $hash->{Value} }
    );