[Dresden-pm] Return-Wert von parse_file() XML::LibXML
Aristoteles Pagaltzis
pagaltzis at gmx.de
Mo Aug 11 10:34:18 PDT 2008
* Andreas Kunert-Werneburg <akunert at main-rheiner.de> [2008-08-11 11:55]:
> Jetzt würde ich gern VOR dem Verschieben testen, ob das
> XML-File valide ist.
Das geht nur, indem du das XML zu parsen versuchst. Von außen
ansehen kann man es der Datei schlecht. ;-)
> Jetzt würde ich gern VOR dem Verschieben testen, ob das
> XML-File valide ist. Ist das nicht der Fall, so soll es in
> einen anderen Ordner verschoben werden und der Parser NICHT
> gestartet werden.
Warum ist das so wichtig?
> ich arbeite mit XML::LibXML und frage mich, ob ich bei my
> $document = $parser->parse_file($xmlfilename); einen Returnwert
> erhalten würde, mithilfe dessen ich die entsprechende
> Verschiebe-Operation einleiten kann.
Du kannst mit `eval { ... }` die Exception abfangen, die von
LibXML generiert wird, wenn der Parse-Versuch fehlschlägt.
> Mal laienhaft:
> ------------------------------------------
> $parser = new XML::LibXML;
> if($parser->parse_file($xmlfile) == TRUE){
> verschiebe nach A und rufe Parser auf;
> } else {
> verschiebe nach B und melde Fehler per Mail;
> }
> -------------------------------------------
>
> Mir gehts eigentlich nur darum, zu prüfen, ob die Datei valides
> XML enthält. Den Rest bekomme ich dann schon hin.
my $doc;
eval { $doc = XML::LibXML->new->parse_file( $xmlfile ) };
if ( $doc ) {
# verschiebe nach A
# Parser-Aufruf nicht mehr nötig, einfach $doc nehmen
}
else {
# verschiebe nach B und melde Fehler per Mail
}
Gruß,
--
Aristoteles Pagaltzis // <http://plasmasturm.org/>
Mehr Informationen über die Mailingliste Dresden-pm