我剛剛使用Perl XML :: SAX,並且遇到觸發的字符事件問題。我試圖用perl解析一個非常大的XML文件。我的目標是獲取每個標籤的內容(我不知道標籤名稱 - 給定任何XML文件,我應該能夠破解記錄模式並返回每個記錄的數據和標籤,如標籤:數據)。Perl XML :: SAX - character()方法錯誤
使用小文件時,一切正常。但是,在大文件上運行時,字符{}會對內容進行部分讀取。減少閱讀的方式沒有特定的模式。有時它是數據的起始少數字符,有時是其最後幾個字符,有時它只是來自實際數據的一個字母。
SAX解析器是:
$myhandler = MyFilter->new();
$parser = XML::SAX::ParserFactory->parser(Handler => $myhandler);
$parser->parse_file($filename);
而且,我已經寫了我自己的處理程序調用MyFilter和overridding解析器的性格方法。
sub characters {
my ($self, $element) = @_;
$globalvar = $element->{Data};
print "content is: $globalvar \n";
}
即使這個打印語句,部分時間讀取值。 我也打過電話之前加載Parsesr包的$ parser->解析()爲:
$XML::SAX::ParserPackage = "XML::SAX::ExpatXS";
史迪威不起作用。任何人都可以幫我在這裏嗎?提前致謝!
我建議切換到[XML :: LibXML :: Reader](http://p3rl.org/XML::LibXML::Reader)。 – choroba 2013-04-30 13:46:33