Perl XML :: LibXML我哪里出错了

时间:2013-04-22 00:06:05

标签: xml perl

我在这里有一个相当愚蠢的时刻。问题是,这是一个两天的愚蠢时刻,不知道任何知道perl的人,我在这里变得相当混乱。 请考虑以下代码:

  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>

我在这里搜索了我的问题的答案,但我显然遗漏了一些非常基本的东西。 如果您有解决方案和时间,请回来。 非常感谢

1 个答案:

答案 0 :(得分: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