2011-04-20 83 views
1

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 

回答

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 
+0

謝謝你的幫助。如果內容位於單獨的xml文件中,也可以將'$ xml'作爲文件讀入?我會怎麼做? – cjd143SD 2011-04-20 04:35:05

+0

是的,你可以通過提供xml文件的路徑,比如'my $ xml =「\ path \ to \ test.xml」;' – 2011-04-20 04:42:47

+0

完美。謝謝! – cjd143SD 2011-04-20 04:45:23

0

由於XML ::簡單,不建議用作者自己的新代碼...

的不鼓勵在新代碼中使用此模塊。其他模塊是 可用,提供更直接和一致的 接口。尤其強烈建議使用XML :: LibXML。

您可能會感興趣的檢查出https://metacpan.org/pod/XML::LibXML::Simple

該模塊是XML的鈍重寫::簡單(格蘭特麥克萊恩)使用 的XML ::的libxml解析器XML結構,其中原始使用 平原Perl或SAX解析器。