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
xml Kommentar lesen und schreiben
- DatenMetzgerX
- User
- Beiträge: 398
- Registriert: Freitag 28. April 2006, 06:28
- Wohnort: Zürich Seebach (CH)
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?
wieso willst du dies denn umbedingt in einen Kommentar packen?
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo HP!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.
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
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
-
- User
- Beiträge: 60
- Registriert: Freitag 8. Juni 2007, 07:39
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.
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.
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.Am Besten, du liest den Kommentar mit den konventionellen Mitteln aus. Das heißt mit *open* oder *file*.
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.
Ich glaube bei `lxml` "überleben" Kommentare das parsen. Müsstest Du mal ausprobieren.
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
Mit lxml geht das:
Allerdings logischerweise nur, wenn Kommentare in einem Knoten sind.
Code: Alles auswählen
>>> from lxml import etree
>>> x = etree.fromstring("<foo><!-- test --></foo>")
>>> x.getchildren()
[<!-- test -->]
TUFKAB – the user formerly known as blackbird
-
- User
- Beiträge: 60
- Registriert: Freitag 8. Juni 2007, 07:39
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:
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
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()
Danke
Gruß HP
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.Gibts da was schöneres?
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