Как мне кодировать пары ключ-значение, используя модуль Perl XML :: Simple? - PullRequest
0 голосов
/ 21 апреля 2011

У меня есть хэш в форме

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 Ответ

3 голосов
/ 21 апреля 2011

Прежде всего, ваш образец не является допустимым 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} }
    );
...