如何将简单的xml文件解析为可读格式

时间:2011-04-20 04:06:42

标签: xml perl parsing xml-simple

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"/>

我想将attribute =“value”对转换为csv文件,:,或者我想将其打印出来。

例如:

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

2 个答案:

答案 0 :(得分:3)

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 :(得分:0)

由于作者自己不建议将XML :: Simple用于新代码......

  

不鼓励在新代码中使用此模块。其他模块是   可用,提供更直接和一致   接口。特别强烈建议使用XML :: LibXML。

您可能有兴趣查看https://metacpan.org/pod/XML::LibXML::Simple

  

这个模块是对XML :: Simple(由Grant McLean)使用的直接重写   XML结构的XML :: LibXML解析器,原始使用   普通的Perl或SAX解析器。