Предложение Синан было хорошим, но оно не связывало все точки. Вот очень простая программа, которую я собрал вместе:
файл 1: обработчики (MySAXHandler.pm)
package MySAXHandler;
use base qw(XML::SAX::Base);
sub start_document {
my ($self, $doc) = @_;
# process document start event
}
sub start_element {
my ($self, $el) = @_;
# process element start event
print "Element: " . $el->{LocalName} . "\n";
}
1;
файл 2: Тестовая программа (test.pl)
#!/usr/bin/perl
use strict;
use XML::SAX;
use MySAXHandler;
my $parser = XML::SAX::ParserFactory->parser(
Handler => MySAXHandler->new
);
$parser->parse_uri("some-xml-file.xml");
Примечание. Как получить значения атрибута элемента. Это было описано не так, как я мог бы использовать. Мне потребовалось более часа, чтобы выяснить синтаксис. Вот. В моем XML-файле атрибут был ss: Index. Определение пространства имен для ss было xmlns: ss = "urn: schemas-microsoft-com: office: могущество". Таким образом, чтобы получить глупый атрибут Index, мне понадобилось:
my $ssIndex = $el->{Attributes}{'{urn:schemas-microsoft-com:office:spreadsheet}Index'}{Value};
Это было больно.