如何将简单的xml文件解析为可读格式
问题描述:
Perl新手在这里。有人可以亲切地告诉我如何使用Perl从这个XML文件中提取数据,并将输出格式设置为任何我需要的?我会使用XML :: Simple或将其作为fh打开并以某种方式拆分它?谢谢。如何将简单的xml文件解析为可读格式
使用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
答
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
答
由于XML ::简单,不建议用作者自己的新代码...
的不鼓励在新代码中使用此模块。其他模块是 可用,提供更直接和一致的 接口。尤其强烈建议使用XML :: LibXML。
您可能会感兴趣的检查出https://metacpan.org/pod/XML::LibXML::Simple。
该模块是XML的钝重写::简单(格兰特麦克莱恩)使用 的XML ::的libxml解析器XML结构,其中原始使用 平原Perl或SAX解析器。
谢谢你的帮助。如果内容位于单独的xml文件中,也可以将'$ xml'作为文件读入?我会怎么做? – cjd143SD 2011-04-20 04:35:05
是的,你可以通过提供xml文件的路径,比如'my $ xml =“\ path \ to \ test.xml”;' – 2011-04-20 04:42:47
完美。谢谢! – cjd143SD 2011-04-20 04:45:23