Это потому, что, когда вы разобрать ваш XML, он превращает его в структуру данных Perl - как правило, на хэш, и потому, что XML является иерархическим, что, вероятно, означает, хэш хэшей.
Чтобы распечатать его, вам необходимо «распаковать» хэш. Обычно это называется «pretty_printing». В XML::Simple
это XMLout
.
Или вы можете перебирать ключи хеша, но помните, что вам может потребоваться повторить несколько уровней, если вы это сделаете.
В качестве альтернативы, вы можете использовать Data::Dumper
:
use Data::Dumper;
print Dumper (\$data);
Лично я хотел бы предложить также глядя на одной из библиотек XML - XML::Simple
нет. (Мне нравится XML::Twig
)
На основании вышеизложенных замечаний:
use strict;
use warnings;
use XML::Twig;
my $xml =
'<?xml version="1.0" encoding="UTF-8"?> <M3Monitors version="1.0"> <parameters/> <category name="name" description="Autojobs jobs currently running in the system" count="61" timestamp="2015-01-16T14:24:31"/></M3Monitors>';
my $parser = XML::Twig->new();
$parser->parse($xml);
my $count = $parser->root->first_child('category')->att('count');
print $count;
Хотя примечание - я должен был изменить свой XML, потому что немного это в комментарии имеет неверный формат. Если вы получаете неверный XML в качестве исходных данных, тогда синтаксический анализ XML будет очень болезненным - спецификация дизайна XML говорит, что «сломанный XML является фатальным» http://www.w3schools.com/xml/xml_validator.asp
Я его отредактировал - это плохая форма, но Я сделал это просто, чтобы проиллюстрировать, как XML::Twig
«делает это». Вы никогда не должны пытаться «исправлять» нарушенный XML в обычном режиме. Это структура данных, и если она недействительна, она недействительна. Просто не безопасно делать предположения о том, что это должно быть.
Что вы ожидаете, когда конвертируете ссылку на хэш в строку? Вам нужно вытащить данные, которые вам действительно нужны. – Quentin
Если вы можете дать образец XML и ожидаемого вывода, я создам решение XML :: Twig. – Sobrique
Xml version = "1.0" encoding = "UTF-8"?> пытается извлечь значение счета –
Wanexa