0
Я использую Perl с XML :: Simple для преобразования хеша в XML-документ.XML :: Simple, узлы XML превратились в значение узлов 'name'
Мой сценарий выглядит следующим образом:
#!/usr/bin/perl
use strict;
use warnings;
use XML::Simple;
use Data::Dumper;
my $xml_simple = XML::Simple->new(NoAttr => 1,
KeepRoot => 1);
my $hash = { output => { 'products' => [ { 'product' => { 'titel' => 'ABN AMRO Bank hypotheken',
'owner' => 'ABN AMRO Hypotheken Groep',
'code' => 'ABN AMRO BANK R' } },
{ 'product' => { 'titel' => 'Aegon',
'owner' => 'AEGON Hypotheken',
'code' => 'AEGON pilot' } } ],
'date' => '2012-02-20'} };
my $xml = $xml_simple->XMLout($hash);
print Dumper($xml);
Выход я получаю:
<output>
<date>2012-02-20</date>
<products>
<name>product</name>
<code>ABN AMRO BANK R</code>
<owner>ABN AMRO Hypotheken Groep</owner>
<titel>ABN AMRO Bank hypotheken</titel>
</products>
<products>
<name>product</name>
<code>AEGON pilot</code>
<owner>AEGON Hypotheken</owner>
<titel>Aegon</titel>
</products>
</output>
но то, что я ищу это (см узлы 'продукта'):
<output>
<date>2012-02-20</date>
<products>
<product>
<code>ABN AMRO BANK R</code>
<owner>ABN AMRO Hypotheken Groep</owner>
<titel>ABN AMRO Bank hypotheken</titel>
</product>
<product>
<code>AEGON pilot</code>
<owner>AEGON Hypotheken</owner>
<titel>Aegon</titel>
</product>
</products>
</output>
Это можно сделать с XML :: Simple или использовать другой модуль?
+1. Чтобы четко указать одно в коде: установка ForceArray не требуется для XMLout. – daxim
Спасибо, Филипп. На самом деле я работал над своим ответом, играя со структурой моего хэша. Делать это по-своему (т. Е. Иметь XML просто сказать вам, что ему нужно) гораздо менее болезненным. –
Отключение полного сгибания массива с помощью параметра 'KeyAttr => {}' остановит реструктуризацию XML. – Borodin