libxml2?

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.
Benutzeravatar
beewee
User
Beiträge: 35
Registriert: Mittwoch 18. Januar 2006, 22:16

libxml2?

Beitragvon beewee » Mittwoch 18. Januar 2006, 22:31

Hi,

zuerst: Ich bin noch relativ neu bei Python, sorry, wenn ich irgendwas falsch mache.

Ich habe in einer XML-Datei folgendes:

Code: Alles auswählen

<irgendwasaussenrum>
    <objekt>
        <name>Objekt1</name>
        <eigenschaft>irgendwas</eigenschaft>
    </objekt>
    <objekt>
        <name>Objekt2</name>
        <eigenschaft>nochwas</eigenschaft>
    </objekt>
</irgendwasaussenrum>

jetzt möchte ich das so umwandeln:

Code: Alles auswählen

[{"name":"Objekt1", "eigenschaft":"irgendwas"}, {"name":"Objekt2", "eigenschaft":"nochwas"}]


könnt ihr mir bitte erklären, wie ich das schaffe? Ich durchsuche jetzt schon ewig irgendwelche englischen Anleitungen, aber ich kriegs nicht hin.

Danke für eure Bemühungen im Vorraus schonmal,

BeeWee
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Beitragvon mitsuhiko » Mittwoch 18. Januar 2006, 22:45

Hiho beewee:

Code: Alles auswählen

from xml.dom.minidom import parseString

def parseThis(doc):
    def getTagValue(node, name):
        return node.getElementsByTagName(name)[0].firstChild.nodeValue
    for node in doc.getElementsByTagName('objekt'):
        yield {
            'name': getTagValue(node, 'name'),
            'eigenschaft': getTagValue(node, 'eigenschaft')
        }

if __name__ == '__main__':
    doc = """
    <irgendwasaussenrum>
        <objekt>
            <name>Objekt1</name>
            <eigenschaft>irgendwas</eigenschaft>
        </objekt>
        <objekt>
            <name>Objekt2</name>
            <eigenschaft>nochwas</eigenschaft>
        </objekt>
    </irgendwasaussenrum>
    """
   
    for line in parseThis(parseString(doc)):
        print line


Hoffe das hilft.

Ausgabe:

Code: Alles auswählen

{'eigenschaft': u'irgendwas', 'name': u'Objekt1'}
{'eigenschaft': u'nochwas', 'name': u'Objekt2'}
TUFKAB – the user formerly known as blackbird
Benutzeravatar
beewee
User
Beiträge: 35
Registriert: Mittwoch 18. Januar 2006, 22:16

Beitragvon beewee » Mittwoch 18. Januar 2006, 23:05

man, blackbeard, du bist ja überall ;-)

Dein Code funktioniert perfekt, dankeschön (-;

Grüße

BeeWee
Benutzeravatar
dejot
User
Beiträge: 16
Registriert: Mittwoch 2. November 2005, 17:36
Wohnort: Werne
Kontaktdaten:

Beitragvon dejot » Mittwoch 18. Januar 2006, 23:15

interessant. woher weiß man sowas wie das "from xml.dom.minidom import parseString"?

@beewee: heißt er nicht blackbird? schwarzer vogel, nicht schwarzer bart *g*
Gast

Beitragvon Gast » Mittwoch 18. Januar 2006, 23:43

lol, ist hier halb ubuntuusers versammelt :D

@beewee: heißt er nicht blackbird? schwarzer vogel, nicht schwarzer bart *g*

^^
dass ich das falsch geschrieben hab, liegt daran, dass ich in einem Browsergame mal jemanden kannte, der Blackbeard hieß. Aber "Schwarzer Bart" ist doch auch schön ;-)

BeeWee
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Beitragvon Joghurt » Donnerstag 19. Januar 2006, 03:50

dejot hat geschrieben:interessant. woher weiß man sowas wie das "from xml.dom.minidom import parseString"?
Hieraus?
http://docs.python.org/lib/module-xml.dom.minidom.html
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Beitragvon mitsuhiko » Donnerstag 19. Januar 2006, 06:55

dejot hat geschrieben:interessant. woher weiß man sowas wie das "from xml.dom.minidom import parseString"?


In der Regel weiß man, was man in etwa tun will. Also ich wollte in etwas was mit XML machen. Also findet man in der Modulliste auf docs.python.org ein nettes xml modul. Und weils da so viele Parser gibt hab ich einfach den minidom Parser genommen. der Ist nämlich mit Abstand der einfachste und eine 1:1 Umsetzung vom w3c Standard.
TUFKAB – the user formerly known as blackbird

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], Google [Bot]