2013-04-22 2 views
0

У меня здесь довольно глупый момент. Проблема в том, что это был двухдневный глупый момент, и, не зная никого, кто знает perl, я довольно запутался здесь. Рассмотрим следующий код: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(); 
    } 
    } 

Я пытаюсь напечатать содержимое OCRCharacters. Вот голые кости файла 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

Смежные вопросы