#xml #perl #parsing #xml-simple
#xml #perl #синтаксический анализ #xml-простой
Вопрос:
Здесь новичок в 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-файл, :
или, тем не менее, я хочу распечатать это.
Пример:
duration:277135 count:51 numDirs:50 bytesUsed:110133451
Ответ №1:
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
Комментарии:
1. спасибо за вашу помощь. можно
$xml
также прочитать как файл, если содержимое было в отдельном XML-файле? как бы мне это сделать?2. да, вы можете сделать это, просто указав путь к xml-файлу, например
my $xml = "pathtotest.xml";
Ответ №2:
Поскольку XML::Simple не рекомендуется для нового кода самим автором…
Использование этого модуля в новом коде не рекомендуется. Доступны другие модули, которые обеспечивают более простые и согласованные интерфейсы. В частности, настоятельно рекомендуется использовать XML::LibXML.
возможно, вам будет интересно ознакомитьсяhttps://metacpan.org/pod/XML::LibXML::Simple.
Этот модуль представляет собой грубую перепись XML::Simple (автор Grant McLean) для использования синтаксического анализатора XML ::LibXML для структур XML, где в оригинале используются простые синтаксические анализаторы Perl или SAX.