Seite 1 von 1
xml Kommentar lesen und schreiben
Verfasst: Montag 17. Dezember 2007, 15:51
von HarryPython
Hi.
Ich möchte gern unter der Codierungszeile meines xml's eine Kommentarzeile einfügen und diese dann auch wieder auslesen können. Hab zu dem Thema leider nichts gefunden.
Gruß HP
Verfasst: Montag 17. Dezember 2007, 16:47
von DatenMetzgerX
ein kommentar ist eigentlich nur für den entwickler da und wird vom programm nicht benötigt.
wieso willst du dies denn umbedingt in einen Kommentar packen?
Re: xml Kommentar lesen und schreiben
Verfasst: Montag 17. Dezember 2007, 17:05
von gerold
HarryPython hat geschrieben:Ich möchte gern unter der Codierungszeile meines xml's eine Kommentarzeile einfügen und diese dann auch wieder auslesen können. Hab zu dem Thema leider nichts gefunden.
Hallo HP!
Am Besten, du liest den Kommentar mit den konventionellen Mitteln aus. Das heißt mit *open* oder *file*.
Und vor dem Schreiben des XML-Strings in eine Datei, fügst du am Anfang deinen Kommentar hinzu. Auch wieder mit den normalen Dateizugriffsmitteln von Python.
mfg
Gerold

Verfasst: Montag 17. Dezember 2007, 17:26
von HarryPython
Hi
Und ich dachte ich wäre der Entwickler.
Ich bekomme ein xml welches eine Kommentarzeile enthält. Dadurch kann ich das xml File genau identifizieren und verhinderen, dass ein falsches geladen wird. Und genau so wollte ich auch mein eigenes erkennen.
Am Besten, du liest den Kommentar mit den konventionellen Mitteln aus. Das heißt mit *open* oder *file*.
Hmm. Genau das wollte ich mit meiner Frage umgehen. Hatte gedacht es gibt dafür in der einer xml Bibliothek ein Befehl, den ich nur nicht finde. Wäre interessant zu wissen, ob das xml den Kommentar auch als Kommentar erkennt. Ich probiere es mal aus.
Verfasst: Montag 17. Dezember 2007, 18:13
von BlackJack
Grundsätzlich dürfen XML-Bibliotheken Kommentare einfach komplett ignorieren, das heisst die müssen nicht an den Benutzer der Bibliothek weitergeleitet werden.
Ich glaube bei `lxml` "überleben" Kommentare das parsen. Müsstest Du mal ausprobieren.
Verfasst: Montag 17. Dezember 2007, 19:28
von mitsuhiko
Mit lxml geht das:
Code: Alles auswählen
>>> from lxml import etree
>>> x = etree.fromstring("<foo><!-- test --></foo>")
>>> x.getchildren()
[<!-- test -->]
Allerdings logischerweise nur, wenn Kommentare in einem Knoten sind.
Verfasst: Dienstag 18. Dezember 2007, 13:23
von HarryPython
Hi.
Danke für eure Antworten.
Bei lxml bekomme ich encoding Fehler zurück. Hab das damit auch schnell wieder aufgegeben, da ich ja nicht in einen Knoten schreiben wollte.
Hab das wie Gerold schon gesagt hat mit "open" usw. gelöst.
Hier meine Lösung:
Code: Alles auswählen
#Abspeichern der geladenen mxl Datei
tree = ET.ElementTree(root)
tree.write("dateiname", "UTF-8")
#Öffnet die Datei und liest eine Liste aus
f = file("dateiname", "r")
text = f.readlines()
f.close()
#Fügt ein Kommentar in die Liste ein und schreibt das xml File
t = file("dateiname", "w")
text.insert(1,"<!-- Mein Kommentar -->\n")
t.writelines(text)
t.close()
Das mit der Datei öffnen, schließen und dann wieder öffnen um zu schreiben, sieht ein wenig aus wie gewollt aber nicht gekonnt. Gibts da was schöneres?
Danke
Gruß HP
Verfasst: Dienstag 18. Dezember 2007, 16:26
von keppla
Gibts da was schöneres?
Die XML-spezifikation rät afaik davon ab, kommentare zu irgendetwas anderem, außer zum kommentieren zu missbrauchen, insbesondere für nicht für Anweisungen an den Parser.
Dazu solle man "processing instructions" verwenden.
Die sehen so aus: <?target krams ?> und werden afaik von den XML-Parsern am leben gelassen.
http://www.linkwerk.com/pub/xmlidp/2000/pi.html