Seite 1 von 1

xml: Werte extrahieren

Verfasst: Donnerstag 24. August 2006, 12:23
von dh233
Hi!

Ich habe folgendes Problem: Ich will von einem XML-File bestimmte Tags (mit deren Werten und Attributen) auslesen und diese dann in einem neuen xml-File zusammenführen.

Beispiel:

Code: Alles auswählen

<test>
	<tag1 name="blabla">wert1</tag1>
	<tag2>wert2</tag2>
</test>
Nun möchte ich beispielsweise nur <tag2>wert2</wert2> entnehmen und ein neues xml-file mit folgender struktur bauen:

Code: Alles auswählen

<result>
	<tag2>wert2</tag2>
</result>
Hintergrund: Ich habe später mehrere xml-Files, von welchen ich dann eben spezielle Werte entnehmen möchte, um ein eigenes XML-File zu bauen.

P.S.: Schön wäre es auch, wenn ich die namen der Tags umbenennen könnte.

Ich dachte, dass hier eventuell XSLT die passende Technik wäre, aber was meint ihr dazu? Mich würde vor allem interessieren, welche Programme für diese Aufgabe besonders geeignet sind.

Danke, lG

dh233

Verfasst: Donnerstag 24. August 2006, 12:47
von Hannes-Spz
schau mal, ob das was für dich ist:
http://pyxml.sourceforge.net/topics/
lg hannes

Re: xml: Werte extrahieren

Verfasst: Donnerstag 24. August 2006, 13:21
von gerold
dh233 hat geschrieben:Ich habe folgendes Problem: Ich will von einem XML-File bestimmte Tags (mit deren Werten und Attributen) auslesen und diese dann in einem neuen xml-File zusammenführen.
Hi dh233!

Mit ElementTree bist du auf der sicheren Seite, das wird ab Python 2.5 sogar mit dabei sein.

http://effbot.org/zone/element-index.htm

Das Generieren von XML-Dateien ist damit ein Kinderspiel. Allerdings habe ich damit noch nie eine XML-Datei geparst. Daber dazu findest du sicher eine Hilfe auf der Website.

mfg
Gerold
:-)

Verfasst: Donnerstag 24. August 2006, 14:18
von BlackJack
Kleines Beispiel mit ElementTree:

Code: Alles auswählen

from elementtree import ElementTree as etree

source = '''\
<test> 
     <tag1 name="blabla">wert1</tag1> 
     <tag2>wert2</tag2> 
</test>
'''

root = etree.fromstring(source)
wert = root.find('tag2').text

new = etree.Element('result')
tag = etree.SubElement(new, 'tag2')
tag.text = wert
etree.dump(new)

Verfasst: Freitag 25. August 2006, 07:18
von dh233
Vielen Dank, das hilft mir weiter! Denn das Ganze mit der 4Suite zu machen ist meiner Meinung nach ziehmlich unelegant und wenn dann ElementTree sowieso in Python 2.5 dabei ist ist das umso besser :lol:

lG

dh233