2011-04-20 6 views
1

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"; 
} 

출력 :

XML :: 간단한 저자 자신에 의해 새로운 코드를 사용하지 않는 것이 좋습니다 때문에
bytesUsed : 110133451 
numDirs : 50 
count : 51 
duration : 277135 
+0

귀하의 도움에 감사드립니다. 내용이 별도의 XML 파일에있는 경우'$ xml'을 파일로 읽을 수 있습니까? 내가 어떻게 그럴 수 있니? – cjd143SD

+0

예. xml 파일의 경로를'my $ xml = "\ path \ to \ test.xml"; –

+0

과 같이 제공하면됩니다. 감사! – cjd143SD

0

...

새로운 코드에서이 모듈을 사용하는 것은 바람직하지 않습니다. 다른 모듈은 더 간단하고 일관성있는 인터페이스를 제공하는 입니다. . 특히 XML :: LibXML을 적극 권장합니다.

https://metacpan.org/pod/XML::LibXML::Simple을 확인해 보는 것이 좋습니다.

이 모듈은 XML의 무딘 재 작성 : 간단한 (그랜트 맥린에 의해) 는 XML : XML 구조에 대한 LibXML 파서, 원래 일반 펄이나 SAX 파서를 사용하는 사용하는 것입니다.

관련 문제