2013-04-22 2 views
0

나는 다소 어리석은 순간을 보내고 있습니다. 문제는 그것이 2 일 바보 같은 순간이었고, 펄을 아는 사람을 알지 못한다는 것입니다, 나는 오히려 여기에서 엉망이되고 있습니다. 나는 OCRCharacters의 내용을 인쇄하기 위해 노력하고있어Perl XML :: LibXML 어디서 잘못 되었나요?

use strict; 
    use warnings; 
    use XML::LibXML; 
    my $filename = 'f:\proxml\1561\15610024.xml'; 
    my $parser = XML::LibXML->new(); 
    my $doc = $parser->parse_file($filename); 

    for my $line ($doc->findnodes('Document/Page/Lines')) { 
      for my $property ($line->findnodes('/Document/Page/Lines/OCRCharacters')) { 
    print $property->textContent(); 
    } 
    } 

: 다음 코드를 고려하십시오. 다음은 XML 파일의 골자입니다 :

<Document> 
    <Page> 
    <Lines> 
     <NumberOfLines>21</NumberOfLines> 
     <LineNumber>1</LineNumber> 
     <OCRCharacters>Test ocr in XML</OCRCharacters> 
     <LineNumber>2</LineNumber> 
     <OCRCharacters>This is the 2nd line</OCRCharacters> 
    </Lines> 
    </Page> 
</Document> 

나는 내 문제에 대한 답을 여기에 검색 한, 그러나 나는 분명히 꽤 근본적인 뭔가가있어. 해결책이 있고 시간이 필요하면 다시 방문하십시오.

+0

그리고 단지 * 문제는 * 무엇인가? 너는 말하지 않았다. – jwodder

답변

0
$line->findnodes('/Document/Page/Lines/OCRCharacters') 

많은 감사해야

$line->findnodes('OCRCharacters') 

use strict; 
use warnings; 
use XML::LibXML qw(); 

my $parser = XML::LibXML->new(); 
my $doc = $parser->parse_fh(\*DATA); 

for my $line ($doc->findnodes('/Document/Page/Lines')) { 
    for my $property ($line->findnodes('OCRCharacters')) { 
     print $property->textContent(), "\n"; 
    } 
} 

__DATA__ 
<Document> 
    <Page> 
    <Lines> 
     <NumberOfLines>21</NumberOfLines> 
     <LineNumber>1</LineNumber> 
     <OCRCharacters>Test ocr in XML</OCRCharacters> 
     <LineNumber>2</LineNumber> 
     <OCRCharacters>This is the 2nd line</OCRCharacters> 
    </Lines> 
    </Page> 
</Document> 

출력 :

Test ocr in XML 
This is the 2nd line 
+0

Ikagami, 내 문제는 프로그램이 실행되었지만 출력이 전혀 발생하지 않았다는 것입니다. 제 모호한 설명에 사과드립니다. 그러나 귀하의 솔루션은 효과가 있습니다. – user2305558

+0

안녕하세요, 아니요, 저는 총을 뛰어 넘었습니다! 코드는 여전히 나를 위해 작동하지 않습니다. – user2305558

관련 문제