2017-01-02 3 views
1

Versuchen, diese XML zu analysieren, aber ich kann nicht scheinen, ganz wo ich falsch liege.Python XML-Kind lesen

Snippet von XML:

<thexml timestamp="2017-01-02T10:17:41"> 
<event="41" date="2017-04-01" id="5543" time="09:30:00" type="seat" link="na"></event> 
</thexml> 

Ich versuche:

DOMTree = parseString(response.content) 
collection = DOMTree.documentElement 
selections = collection.getElementsByTagName("event") 
for select in selections: 
print "event found" 

Dies scheint es löst in der XML auf die Ereignisse zu arbeiten. Der Versuch, den Typ zu bekommen, stopft mich beispielsweise mit diesem Format.

tags = select.getElementsByTagName("type") 

Wenn ich dies verwende, wird die Zeichenfolge für Tags, die darauf hindeutet, dass es gefunden wurde. Aber ich bin mir nicht sicher, wie ich tatsächlich die Schnur des Kindes lesen soll. Ich habe versucht, Variationen auf:

print type.childNodes[0].data 
print type.childNodes.data 
print type.data 

Fehle ich etwas wirklich offensichtlich hier? Ich parse ein paar XML's, aber dieses Format wirft mich ein bisschen. Würde einen Punkt in die richtige Richtung schätzen.

+0

Welche Bibliothek haben Sie die XML zu analysieren, verwenden? – snakecharmerb

+0

Die von Ihnen angegebene XML-Datei ist nicht gültig. 'ExpatError: nicht wohlgeformt (ungültiges Token):' Sind Sie sicher, dass dies genau der XML-Code ist, den Sie analysieren möchten? – Dekel

+0

Ein Tippfehler im XML-Snippet wurde korrigiert. Ich verwende xml.dom.minidom – PoweredByCoffee

Antwort

1

Sie hatten immer noch ein Problem in Ihrem XML.

Hier ist das Update (und wie die relevanten Attribute zu extrahieren):

In [17]: c = """<thexml timestamp="2017-01-02T10:17:41"> 
    ...: <event date="2017-04-01" id="5543" time="09:30:00" type="seat" link="na"></event> 
    ...: </thexml> 
    ...: """ 
In [18]: DOMTree = parseString(c) 
In [19]: collection = DOMTree.documentElement 
In [20]: s = collection.getElementsByTagName('event') 
In [21]: for e in s: 
    ...:  print(e.getAttribute('type')) 
    ...: 
seat 

Note that in your example - type is an Attribute (And not Node) so you can't use getElementsByTagName("type") , you will need to use getAttribute

+0

Oh jeez Ich bin ein Idiot. Danke für das sehr geschätzt. – PoweredByCoffee

+0

sicher :) Sie sind herzlich willkommen! – Dekel