2009-07-31 3 views
0

Wenn ich versuche, eine XML-Datei mit XML::Simple zu lesen, manchmal bekomme ich diese Fehlermeldung:Wie kann ich den Fehler "Konnte Dateiparserkontext für Datei nicht erstellen" mit Perl libxml auf Debian beheben?

Datei kann nicht Parser Kontext für Datei ...

Nach einigen googeln schaffen, wie es scheint zu sein a problem with libxml-libxml-perl und soll in der Version behoben werden, die ich verwende (1.59-2).

Irgendwelche Ideen?

Edit: (Code)

sub Read 
{ 
    my ($file, $no_option) = @_; 
    my %XML_INPUT_OPTIONS = (KeyAttr => [], ForceArray => 1); 

    if ((defined $file) && (-f $file)) 
    { 
    my @stats = stat($file); 
    if ((defined $XML_CACHE{$file}) 
     && ($stats[9] == $XML_CACHE{$file}{modif_time})) 
    { 
     return ($XML_CACHE{$file}{xml}); 
    } 
    else 
    { 
     my $xml = eval { XMLin($file, 
     (defined $no_option ?() : %XML_INPUT_OPTIONS)) }; 
     AAT::Syslog("AAT::XML", "XML_READ_ERROR", [email protected]) if ([email protected]); 
     $XML_CACHE{$file}{modif_time} = $stats[9]; 
     $XML_CACHE{$file}{xml} = $xml; 
     return ($xml); 
    } 
    } 

    return (undef); 
} 

Und ja, ich sollte der Fehler weiterhin "Keine solche Datei oder das Verzeichnis an ..." & wird verwenden XML::Simple-Cache-Funktion ...

+1

Bitte geben Sie den Code ein. – Telemachus

+0

Ich habe gerade, Entschuldigung für die Verzögerung ... – sebthebert

Antwort

1

Hat? Wenn ja, dann denke ich, dass das Problem ist, dass (egal aus welchem ​​Grund), wenn Sie an diesen Punkt im Skript gelangen, was auch immer Sie an XML::Simple übergeben haben keine Xml-Datei darin. Lange Rede, kurzer Sinn: Das Skript, das Sie verwenden, kann eine ungültige Variable (leer? Leer?) An XML::Simple übergeben, und an diesem Punkt verstopft das Modul. Um zu debuggen, fügen Sie einen Haken bei dem, was Sie an XML::Simple übergeben, bevor Sie es weitergeben. (Siehe den nächsten Absatz für ein konkretes Beispiel zu erklären warum Ich denke, das könnte Ihr Problem sein.)

Vor ein paar Monaten hatte ich ein ähnliches Problem mit Weather::Google. Kurz gesagt, das Wettermodul versuchte, Daten von Google über LWP::Simpleohne einen User Agent zu erhalten. Google begann (anscheinend), Anfragen ohne einen Benutzeragenten abzulehnen. Ich musste die Module zurückverfolgen, weil der Fehler von XML::Simple zu kommen schien. In der Tat wurde es verursacht durch, was in LWP::Simple und Weather::Google getan wurde. Oder, der Fehler war ein Ergebnis von Weather::Google nicht die Daten überprüfen, die in einem Objekt über LWP::Simple erstellt wurde. In einem solchen Fall kann es zunächst schwierig sein zu sehen, was falsch läuft und wo.

+0

Ja, es gibt "Keine solche Datei oder Verzeichnis bei ..." nach, aber ich überprüfe, dass diese Datei vor XMLin (-f $ -Datei) existiert – sebthebert

Verwandte Themen