Moin,
"...ich habe eine datei mit ungefähr folgendem inhalt: ..."
Diese Angabe ist wenig nützlich.
Man sollte zB. wissen: können verschachtelte tags der gleichen Art
vorkommen?, also zB:
<table>
<table>
<table>
</table>
</table>
</table>
Warum hat der loop-Endtag ein Attribut?
</loop argument="playlist">
Warum haben die alleinstehenden tags keinen End-slash?
Zwar kannst Du Dein Problem mit regexes angehn, allerdings müsstest Du
dann schon einiges darüber wissen. Deine Fragestellung lässt vermuten,
daß das nicht der Fall ist.
Und es gibt wesentlich einfachere Möglichkeiten. Mal angenommen, Deine
Datei wäre einigermaßen well-formed, zB. (template.txt):
<template>
<playlist>Playliste
<table>
<loop argument="playlist">
<table>schataratachtel
</table>
<tr>
<td>
<name1_1 />
<artist1_1 />
</td>
<td>
<name1_2 />
<artist1_2 />
</td>
</tr>
<tr>
<td>
<name2_1 />
<artist2_1 />
</td>
<td>
<name2_2 />
<artist2_2 />
</td>
</tr>
</loop>
</table>
</playlist>
</template>
Dann könntest Du in python zB. sagen:
import xml.dom.minidom as x
f = file('template.txt')
T = x.parseString(f.read())
f.close()
for i in T.getElementsByTagName('*') :
try : t = i.firstChild.data
except : t = ''
print '%-10s => %-10s => %s' % (i.parentNode.nodeName, i.nodeName, t)
Oder:
import xml.dom.minidom as x
f = file('template.txt')
T = x.parseString(f.read())
f.close()
def N(n):
t = []
def N(n):
for i in n.childNodes :
if i.nodeType == 1 :
t.append((i.tagName, i.getElementsByTagName('*')))
N(i)
N(n)
return t
for i in N(T) : print i, 'n'
Soll heißen, es liegt eigentlich alles (und noch ein bissel mehr) bereits
vor, Du brauchst Dir bloß rauspicken, was Dir wichtig ist, und kannst damit
anstellen, was Du willst (in Variablen packen, irgendwo abspeichern, sonstwie
weiterverwursten).
Damit kannst Du Dir ne Menge Arbeit sparen, und Du brauchst Dir um den korrekten
Entwurf der notwendigen regexes und deren Weiterbehandlung nicht den Kopf
zerbrechen.
gruß
matho