XML Datei bearbeiten

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
remax
User
Beiträge: 3
Registriert: Mittwoch 5. August 2009, 12:01

Einen wunderschönen Tag wünsche ich allen,

ich bin ein Python Neuling und möchte gern ein Skript schreiben. Und hoffe ihr könnt mir bei meine Vorhaben helfen.

Folgendes sollte das Skript erledigen:

-XML Datei einlesen
-Einen TAG suchen: z.B. <test><anderer tag></anderer tag></test>
-Den gefundenen TAG löschen und alles was innerhalb des TAGs war + einrutschen der Zeilen(Zeilenumbrüche mit löschen)
-Datei speichern mit einen anderen Namen

Es klingt ganz einfach, leider fehlt mir noch die Erfahrung mit Python.
Kann vielleicht einer mir ein Beispiel nennen, wie dies umzusetzen ist?

Grüße remax
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

lxml ist eine gute Bibliothek für die XML-Verarbeitung, die man aber leider nachinstallieren muss. Unter Linux ist das kein Problem, auf dem Mac empfiehlt es sich Python und lxml über Macports zu installieren, denn sonst gibt es Probleme und unter Windows weiß ich's nicht.

lxml hat eine cssselect-Methode, die so funktioniert wie JQuery und einfache Manipulation von XML-DOMs erlaubt.

Den SAX-Weg würde ich nur gehen, wenn die Datei so groß ist, dass sie nicht in den Arbeitsspeicher passt oder es auf jede Millisekunde bei der Verarbeitung ankommt. In allen anderen Fällen würde ich Speicher und Laufzeit gegen eine viel einfachere Programmierung eintauschen.

Stefan
remax
User
Beiträge: 3
Registriert: Mittwoch 5. August 2009, 12:01

Ich habe leider nicht die Möglichkeit Pakete auf dem laufendem Server System zu installieren(SUSE 10), aber Python ist da drauf. Deswegen hatte ich vor mit Python dieses Skript zu schreiben. Mit welchem Befehl kann man den raus kriegen, welche Python Pakete bereits installiert sind?
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

remax hat geschrieben:Mit welchem Befehl kann man den raus kriegen, welche Python Pakete bereits installiert sind?
Hm, http://www.google.com/search?q=suse+paketmanager , "rpm -q" oder so? Ich nix sprechen Suse. Wenn du nix installieren darfst, musst du eben mit http://www.google.com/search?q=python+documentation+xml auskommen... So ein DOM-Knoten hat die üblichen vom W3C definierten Methoden, die eigentlich in jeder Sprache irgendwie umständlich sind.

Stefan
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Wenn dein Python 2.5+ ist, kannst du auch ElementTree nutzen.
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

Mit welchem Befehl kann man den raus kriegen, welche Python Pakete bereits installiert sind?

Code: Alles auswählen

rpm -qa                # listet alle Pakete
rpm -qa | grep python  #fast alle python Relevanten, da suse die meist nach python-paketname benennt
remax
User
Beiträge: 3
Registriert: Mittwoch 5. August 2009, 12:01

Leider nur Python 2.4 installiert. Unter Help(xml) kann man sehen, dass es mit DOM uns SAX umgehen kann.

Hat einer für mich ein Beispiel, mit dem ich vielleicht anfangen könnte.
Bin leider ein absoluter Python Anfänger, habe aber einige Skills in anderen Skriptsprachen und Basic.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

http://effbot.org/zone/element-index.htm
ElementTree ist pure Python, darum sollte es keine Probleme geben, wenn du das einfach in deinen PATH wirfst.
Bevor du dir SAX/DOM antust, willst du das ausprobieren, denn die beiden machen wirklich keinen Spass.
lunar

sma hat geschrieben:Den SAX-Weg würde ich nur gehen, wenn die Datei so groß ist, dass sie nicht in den Arbeitsspeicher passt […]
lxml.etree hat eine ".iterparse()"-Methode, die meines Wissens nur Teile des Dokuments einliest, und daher auch mit großen Dokumenten zurecht kommt.
Antworten