Как разобрать простой XML-файл в читаемый формат - PullRequest
1 голос
/ 20 апреля 2011

Perl новичок здесь. Может кто-то любезно показать мне, как использовать Perl для извлечения данных из этого XML-файла и форматирования вывода в любом случае мне нужно? Буду ли я использовать XML :: Simple или открыть это как FH и разделить его как-нибудь? спасибо.

Документация по использованию XML :: Simple не кажется мне простой.

Например, у меня есть небольшой xml-файл, который выглядит следующим образом.

test.xml

<?xml version="1.5" encoding="UTF-8"?><org.apache.Content duration="277135" count="51" numDirs="50" bytesUsed="110133451"/>

Я хотел бы преобразовать пары «атрибут =« значение », чтобы их можно было читать как файл CSV, : или, тем не менее, я хочу их распечатать.

Ex:

duration:277135 count:51 numDirs:50 bytesUsed:110133451

Ответы [ 2 ]

3 голосов
/ 20 апреля 2011
Use XML::Simple - Easy API to maintain XML (esp config files) or 
see XML::Twig - A perl module for processing huge XML documents in tree mode.

use strict;
use warnings;
use XML::Simple;
use Data::Dumper;

my $xml = q~<?xml version="1.5" encoding="UTF-8"?>
<org.apache.Content duration="277135" count="51" numDirs="50" bytesUsed="110133451"/>~;

print $xml,$/;

my $data = XMLin($xml);

print Dumper( $data );

foreach my $attributes (keys %{$data}){
  print"$attributes : ${$data}{$attributes}\n";
}

Выход:

bytesUsed : 110133451
numDirs : 50
count : 51
duration : 277135
0 голосов
/ 20 марта 2014

Поскольку XML :: Simple не рекомендуется для нового кода самим автором ...

Использование этого модуля в новом коде не рекомендуется.Доступны другие модули, которые обеспечивают более простые и согласованные интерфейсы.В частности, настоятельно рекомендуется XML :: LibXML.

Вам может быть интересно проверить https://metacpan.org/pod/XML::LibXML::Simple.

Этот модуль является тупым переписыванием XML :: Simple(Grant McLean) использовать синтаксический анализатор XML :: LibXML для XML-структур, где в оригинале используются обычные синтаксические анализаторы Perl или SAX.

...