Я пытаюсь использовать модуль XML :: Simple CPAN для преобразования вывода из нашей базы данных в простую структуру XML. Проблема в том, что возвращаемый результат не является тем, на что я надеялся, независимо от того, какие параметры я пытаюсь передать XML :: Simple.Perl Object to XML Использование XML :: Simple
В таблице базы данных мы пытаемся вывести это просто набор элементов с определением:
CREATE TABLE `items` (
`id` int(8) NOT NULL,
`name` varchar(40) NOT NULL,
`manufacturer` varchar(40) NOT NULL,
`added` datetime NOT NULL,
PRIMARY KEY (`id`)
);
Вот код Perl мы в настоящее время с помощью:
my $SQL = qq| select * from items |;
my $sth = main::DatabaseQuery($SQL);
my $items;
my $count = 0;
while(my $item = $sth->fetchrow_hashref()) {
$items->[$count] = $item;
$count++;
}
require XML::Simple;
my $xs = XML::Simple->new(ForceArray => 1, KeepRoot => 1);
my $xml = $xs->XMLout($ref);
Эти выходы следующий XML:
<anon id="10000" name="Item 1" manufacturer="Manufacturer 1" added="2009-01-01" />
<anon id="10001" name="Item 2" manufacturer="Manufacturer 2" added="2009-01-01" />
<anon id="10002" name="Item 3" manufacturer="Manufacturer 3" added="2009-01-01" />
вместо этого я хочу его выход следующим образом:
<items>
<item>
<id>10000</id>
<name>Item 1</name>
<manufacturer>Manufacturer 1</manufacturer>
<added>2009-01-01</added>
</item>
<item>
<id>10001</id>
<name>Item 2</name>
<manufacturer>Manufacturer 2</manufacturer>
<added>2009-01-01</added>
</item>
<item>
<id>10002</id>
<name>Item 3</name>
<manufacturer>Manufacturer 3</manufacturer>
<added>2009-01-01</added>
</item>
</items>
Я уверен, что есть некоторые второстепенные вещи, которые я пропускаю, поэтому, пожалуйста, дайте мне знать, как я могу изменить нашу текущую реализацию, чтобы произвести наш желаемый вывод XML. Заранее спасибо!
Почти все работает, но код, который вы предоставили, не вставляет каждый элемент под отдельные теги , и вместо этого каждый элемент вложен в свой собственный тег. Я хотел бы, чтобы все элементы были вставлены под один . Любые идеи о том, как обновить предлагаемую реализацию для достижения этой цели? –
Похоже, мы оба заметили это одновременно. Спасибо за обновление и за быстрый ответ. Работает отлично! –
@ Russell: если он работает, пожалуйста, воздержитесь. – Ether