我在这里有一个相当愚蠢的时刻。问题是,这是一个两天的愚蠢时刻,不知道任何知道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>
我在这里搜索了我的问题的答案,但我显然遗漏了一些非常基本的东西。 如果您有解决方案和时间,请回来。 非常感谢
答案 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