2012-11-21 1 views
3

XML :: Parser를 사용하여 간단한 문자열을 구문 분석하고 싶습니다. 이것은 잘 작동합니다. 그러나 결과에 어떻게 접근해야하는지 모르겠습니다. Perl XML :: Parser - howto는 간단한 구문 분석 트리에 액세스합니까?

#!/usr/bin/perl 

use Data::Dumper; 
use XML::Parser; 

my $parser = XML::Parser->new(Style => 'Tree'); 
my $tree = $parser->parse('<xml type="test" Id="ca19cfd5" result="1 test 2 test 3" elapsed="9" Size="12345" />'); 

print Dumper($tree); 

$VAR1 = [ 
'xml', 
[ 
{ 
'Size' => '12345', 
'Id' => 'ca19cfd5', 
'type' => 'test', 
'elapsed' => '9', 
'result' => '1 test 2 test 3' 
} 
] 
]; 

그래서 완벽하게 내 문자열을 구문 분석 할 수 보여줍니다. 하지만 어떻게이 필드에 액세스합니까? "my $ result = $ tree ..."와 같은 것

주어진 XML 문자열은 항상 위에 표시된 것과 같은 구문을 갖습니다. 내용 만 다릅니다. XML :: 파서가 가장 쉬운 모듈 아니다 말했다 후 $tree->[1]->[0]

my $atts= $tree->[1]->[0]; 

print "size: $atts->{Size}\n"; 

에 사전에

TNX을 엔키두

답변

2

(가) 당신이 찾고있는 속성입니다 사용하기에 조금 낮은 수준입니다. XML :: 나뭇 가지 또는 XML :: LibXML을 사용하면 원하는 것을 쉽게 얻을 수 있습니다.

+0

위대한! Tnx! XML :: Parser는 해당 서버에서 유일하게 사용 가능한 XML 모듈입니다. 그리고 인터넷에 연결되지 않은 시스템에 perl 모듈을 설치하는 것은 쉽지 않습니다! :(;) – Enkidu

+0

Btw, 기존의 모든 속성 목록을 얻으려면 어떻게해야합니까? – Enkidu

+0

속성 목록 : keys % $ atts' – mirod

1

당신은 더 간단 구조

예를 들어

내 모듈 생산 다른 XML 파서로 볼 수 있습니다 :

  • XML을 :: 빠른
  • XML :: 해시 :: LX
  • XML : : 파서 :: 스타일 :: ETree