2017-01-02 8 views
1

このXMLを解析しようとしていますが、どこが間違っているのかわかりません。Python Reading XML Child

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> 

私がしようとしている:

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

これは、それがXMLでのイベントにトリガー動作するようです。たとえば、タイプを取得しようとすると、このフォーマットで私を困惑させています。

tags = select.getElementsByTagName("type") 

これを使用すると、タグの文字列は、それが見つかったことを示すものになります。しかし、私は実際にどのように子供の文字列を読むのかは分かりません。次のバリエーションを試してみました:

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

私はここで本当に何かが分かりませんか?私はXMLの束を解析するが、この形式は私を少し投げている。正しい方向に一点を感謝します。

+0

あなたはXMLを解析するために使用しているどのようなライブラリ:ここ

は修正(および関連する属性を抽出する方法)ですか? – snakecharmerb

+0

入力したXMLは無効です。 'ExpatError:整形されていない(トークンが無効です):'これは解析しようとしている正確なXMLですか? – Dekel

+0

XMLスニペットのタイプミスを修正しました。私はxml.dom.minidomを使用しています – PoweredByCoffee

答えて

1

あなたのXMLにはまだ問題があります。

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

ああ私はばかです。それほど感謝してくれてありがとう。 – PoweredByCoffee

+0

必ず:)あなたは大歓迎です! – Dekel