[Dresden-pm] Return-Wert von parse_file() XML::LibXML
Andreas Kunert-Werneburg
akunert at main-rheiner.de
Fr Aug 15 01:18:51 PDT 2008
Danke Aristoteles,
genau das eval{...} fehlte mir.
Gruß Andreas
Aristoteles Pagaltzis wrote:
> * 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ß,
Mehr Informationen über die Mailingliste Dresden-pm