XML - File ausgelesen oder nicht ?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Pü-Ton
User
Beiträge: 67
Registriert: Donnerstag 8. Mai 2008, 07:52

Hi @ all,

gibt es eine Möglichleit elegant festzustellen ob ein XML - File erfolgreich geparst wurde?
Ich könnte mir vorstellen, dass man das unschön über eine Variable innerhalb des XMLs machen könnte, das will ich aber nicht.

Es geht also darum eine if - Abfrage zu schreiben, die abfrat, ob das File erfolgreich geparst wurde, und wenn nicht, gibt sie eine Fehlermeldung raus...

Danke für alle Hinweise... :D
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Ich bestell mir demächst doch noch eine Glaskugel bei Ebay... ;-)

Etwas mehr Information muss schon sein. Womit parst du denn die XML-Datei. Vielleicht hilft auch ein wenig Quellcode, wenn die Frage in irgend einem Kontext zu einem Programm steht.
shakebox
User
Beiträge: 175
Registriert: Montag 31. März 2008, 17:01

und ne Definition, was "erfolgreich" in dem Fall genau ist, waere vermutlich auch nicht schlecht :)
n4p
User
Beiträge: 55
Registriert: Dienstag 10. Juni 2008, 11:05

also ich habs jetzt mal so verstanden, dass er abfragen will ob es valides xml ist oder ob formale fehler drin sind.. oder?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Bei nicht-wohlgeformten XML wirft der XML-Parser Exceptions, so einfach ist das.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Bei rein syntaktischer Analyse müsste doch eigentlich jeder Parser meckern, oder?

Bei semantischen Sachen braucht es schon einen Parser, der DTDs oder besser XML-Schema beherrscht.

Das sollte in der Doku eines Parsers zu finden sein.

Aber "erfolgreich" könnte auch alles mögliche andere bedeuten, etwa ob alle aus dem XML-File gewünschten Daten gefunden wurden usw. Also ohne weitere Angaben kann man da wohl nicht viel sagen, sondern nur vermuten ;-)

@EyDu: Gibts die denn bei eBay? :D
Pü-Ton
User
Beiträge: 67
Registriert: Donnerstag 8. Mai 2008, 07:52

Moin,

also ich verwende DOM bzw minidom.

Es ist so, dass mein Programm warten soll, bis/ob/dass ein XML-File ausgelesen wurde, weil da wichtige Infos für den Rest des Aufbaus einer Gui drin sind. Dieses XML wird durch den Benutzer eingegeben (also der Pfad) und wenn kein gültiges XML oder gar nichts eingegeben wurde, soll eine Fehlermeldung kommen.
Und da kommt meine Frage her:

Wie kann ich über eine if-Anweisung elegant abfragen, ob dieses XML auch tatsächlich/erfolgreich/wirklich/komplett ausgelesen wurde.

So etwas wie ein :!: HasRunThrough(xml) :!: mit einem :!: true oder false :!: als Rückgabewert.
Pü-Ton
User
Beiträge: 67
Registriert: Donnerstag 8. Mai 2008, 07:52

...in VBscribt würde das so aussehen:

Code: Alles auswählen

If xmlDoc.load(parent.frames("blabla").document.in.infile.value) = false then

...
n4p
User
Beiträge: 55
Registriert: Dienstag 10. Juni 2008, 11:05

Wie schon von einigen hier gesagt, wenn es nicht geparsed werden kann wirft dir der Parser eine Exception vor die Füße. Damit solltest du ja dann was anfangen können.

Code: Alles auswählen

from xml.dom.minidom import parse
try:
    dom1 = parse('datei.xml')
    print 'datei wurde erfolgreich geparsed'
except:
    print 'Datei konnte nicht geparsed werden'
Zuletzt geändert von n4p am Mittwoch 18. Juni 2008, 09:26, insgesamt 1-mal geändert.
Pü-Ton
User
Beiträge: 67
Registriert: Donnerstag 8. Mai 2008, 07:52

ja schon,
aber irgendwann soll das Programm ja von einem Anwender benutzt werden und der kann mit einer Py-Exception nicht viel anfangen.
Der soll eine Fehlermeldung auf den Bildschirm bekommen !!!
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Pü-Ton hat geschrieben: oder gar nichts eingegeben wurde, soll eine Fehlermeldung kommen.
Naja, das musst Du schon per GUI-Funktionalität checken. Also den Rest erst freigeben, wenn eine Datei angegeben wurde und diese dann korrekt war. Letzteres wurde ja nun schon mehrfach beschrieben, ersteres sollte hoffentlich klar sein :-)
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Pü-Ton hat geschrieben:ja schon,
aber irgendwann soll das Programm ja von einem Anwender benutzt werden und der kann mit einer Py-Exception nicht viel anfangen.
Der soll eine Fehlermeldung auf den Bildschirm bekommen !!!
Ja und? Dann schreib eben hin: "Sorry Alter, aber dein XML-File war fehlerhaft ... und für den Kenner hier die Meldung:" und dann die Message der Exception ;-)
Pü-Ton
User
Beiträge: 67
Registriert: Donnerstag 8. Mai 2008, 07:52

ok, danke für die Hinweise.

Ich habs jetzt so gemacht:

Code: Alles auswählen


    try:
        xmlDoc = parse(eingabe.get())
    except expat.ExpatError, e:
        raise XmlParserError("Your Document failed to load due the following error.\n"
            "Error #: %s: %s Line #: %s;\n"
            "Document URL: %s;"
            ) % (xmlDoc.errorCode, xmlDoc.reason, xmlDoc.Line, xmlDoc.url)
Antworten