XML::Parser::Expat
Lude
- perl
0 Martin Jung0 myMojito0 Martin Jung0 myMojito
0 Lude
0 Philipp Hasenfratz
Hi,
meine ersten Gehversuche mit XML. - Das o.g. Perl-Modul erlaubt das Parsen von XML-Dateien; gut. - Jetzt wuerde ich aber gerne noch die Datei vorher auf Wohlgeformtheit pruefen und validieren. - Mit Hilfe von welchem Perl-Modul kann ich das erreichen?
Gruss,
Luddie
Hi,
meine ersten Gehversuche mit XML. - Das o.g. Perl-Modul erlaubt das Parsen von XML-Dateien; gut. - Jetzt wuerde ich aber gerne noch die Datei vorher auf Wohlgeformtheit pruefen und validieren. - Mit Hilfe von welchem Perl-Modul kann ich das erreichen?
meines Wissens is Expat ein _nicht_ validierender XML-Parser, oder?
Wenn das noch den gegenwärtigen Entwicklungsstand repräsentiert, wirst Du wohl einen anderen Parser wählen müssen.
Viele Grüße,
Martin Jung
Hi Luddie,
Mit dem Modul XML::Parser kannst Du natürlich ei XML-Dokument auf Wohlgeformtheit überprüfen:
use XML::Parser;
my $xmlfile = shift @ARGV;
my $parser = XML::Parser->new( ErrorContext => 2 );
eval { $parser->parsefile( $xmlfile ); };
if ( $@ ) {
print STDERR "\nFEHLER in '$xmlfile':\n$@\n";
} else {
print STDERR "'$xmlfile' enthält ein wohlgeformtes XML-Dokument\n";
}
Den Quellcode habe ich aus dem Buch "Perl & XML" (O'Reilly). Jedoch nicht getestet! Wenn Du aber sowieso gerade mit dem Modul XML::Parser experimentierst, wird das Beispiel dir bestimmt helfen.
greets
myMojito
Hi,
Nur damit ich es verstehe:
Mit dem Modul XML::Parser kannst Du natürlich ei XML-Dokument auf Wohlgeformtheit überprüfen:
Aber mit dem Modul XML::Parser::Expat nicht?
Viele Grüße,
Martin Jung
Hallo Martin,
hab gerade nachgelesen, das XML::Parser von XML::Parser::Expat abgeleitet ist. Ich gehe davon aus, das erst das Modul XML::Parser eine komfortable Möglichkeit bietet XML-Dokumente zu verarbeiten.
Näheres wirst Du wahrscheinlich in der Dokumentation zu den Modulen finden.
greets
myMojito
Hi,
hab's erfolgreich getestet (danke), aber neben der Wohlgeformheit gibt's ja noch die Gueltigkeit. - Wie kann man ein XML-Dokument gegen eine DTD validieren? - Modulvorschlaege (Mir ist bewusst, dass es empfehlenswerte und weniger empfehlenswerte Module gibt; meine Frage ist also hoffaehig (an die Forumspolizisten)) willkommen!
Gruss,
Lude
Halihallo Lude
meine ersten Gehversuche mit XML. - Das o.g. Perl-Modul erlaubt das Parsen von XML-Dateien; gut. - Jetzt wuerde ich aber gerne noch die Datei vorher auf Wohlgeformtheit pruefen und validieren. - Mit Hilfe von welchem Perl-Modul kann ich das erreichen?
http://www.cpan.org/modules/by-module/XML/, dort findest du, wie erwartet, alle
Module zum Thema XML. Unter anderem auch den XML::Checker oder XML::Checker::Parser,
wodurch du eine XML Datei validieren kannst. XML::LibXML kommt auch mit einem Validator
und unterstützt sogar DOM Level 3 (XML::DOM "nur" das Level 1). Du darfst auch gerne
den XML-DTD-Parser verwenden und deine XML selber validieren ;)
Wie myMojito implizit sagt, bricht (jeder; auch XML::Parser::Expat [1]) Parser die
Verarbeitung sofort ab, wenn er feststellt, dass ein Dokument nicht wohlgeformt ist.
[1] der ist sogar dafür zu verantworten, dass auch XML::Parser "abgewürgt" wird.
zu myMojito: Jein, XML::Parser hat im Gegensatz zu XML::Parser::Expat einige
Erweiterungen, wie z. B. das Laden externer Ressourcen oder das Repräsentieren von
"Nodes" (nicht zu vergleichen mit DOM!), was von Expat nicht bereitgestellt wird
(XML::Parser::Expat ist einzig allein ein Interface zu Expat). XML::Parser ist also eine
Erweiterung von XML::Parser::Expat, was jedoch nicht impliziert, dass erst XML::Parser
eine "konfortablere" Möglichkeit bietet, XML zu verarbeiten.
Viele Grüsse
Philipp