Sinans Vorschlag war gut, aber er verband nicht alle Punkte. Hier ist ein sehr einfaches Programm, das ich zusammengeschustert:
Datei 1: Der Handler (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;
Datei 2: Das Testprogramm (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");
Hinweis: Wie Sie die Werte eines Elementattributs erhalten. Dies wurde nicht in einer Weise beschrieben, die ich verwenden könnte. Ich brauchte über eine Stunde, um die Syntax herauszufinden. Hier ist es. In meiner XML-Datei war das Attribut ss: Index. Die Namespacedefinition für ss lautet xmlns: ss = "urn: schemas-microsoft-com: office: talkline". Um das alberne Indexattribut zu erhalten, brauchte ich das also:
my $ssIndex = $el->{Attributes}{'{urn:schemas-microsoft-com:office:spreadsheet}Index'}{Value};
Das war schmerzhaft.
Danke. Ich habe den Link "Browse" vorher nie bemerkt. Ich habe die Warnung gesehen, die Sie jedoch anführen. Würden Sie einen anderen Perl SAX Parser empfehlen? Ich bin nicht wählerisch. Es ist nicht für große Dateien, aber ich bevorzuge den ereignisgesteuerten Ansatz für dieses Problem, weil ich sparse Datenausgabe von Excel lese. –
Die XML :: SAX-Dokumentation sieht verständlich aus. Du bekommst meine Stimme. –
@Paul Vielen Dank. –