2011-04-14 4 views
1

내 XML 파일에 한 줄에 여러 개의 <Timestamp> 태그가 있다고 가정 해 보겠습니다. 문서를 한 줄씩 읽습니다. 모든 태그에 얼마나 많은 태그가 있는지 셀 수 있습니까? 나는 다음과 같은 것을 원한다 :문자열에서 문자열 (XML 태그)이 발생한 횟수를 계산하는 방법은 무엇입니까?

foreach "<Timestamp>" in $line { 
    print "FOund"; 
} 

어떤 생각?

+1

우리에게 XML 라이브러리는 XML 파일을 읽을 수 있습니다. – reinierpost

답변

3
while ($line =~ /<Timestamp>/g) { 
    print "Found\n"; 
} 

트릭을해야합니다. /g 수정자가 중요합니다. Using regular expressions in Perlperlretut으로, 글로벌 일치 부분이 있습니다.

+0

예 !!!! 고마워요! 당신은 그것을 설명 할 수 있습니까? – Nidis

+0

@Nidis : 설명에 대한 링크가 추가되었습니다. – Mat

0

'redo'제어 명령문은 현재 명령문 블록의 실행을 재시작합니다. 이 파일을 사용하여 다음과 같이 작성할 수 있습니다.

foreach $line (<>) 
{ 
    $tag = $line =~ m/(<.*>)/; 
    push @tags, $tag; 
    if($tag) redo; 
} 

경고 : 실행하지 않았습니다.

희망이 있습니다. 그것은 XML의

1

, useXML::Twig :

my $twig = XML::Twig->new(twig_roots => { Timestamp => 1 }); 
$twig->parsefile($xml_file_path); 
my $timestamp_count = (my @a = $twig->root->children('Timestamp')); 
관련 문제