2017-10-25 11 views
0

pythonを使用してXML文書からデータを抽出しようとしています。PythonでXMLタグからデータを処理する

私が現在試しているツールで、安定した選択であると思われるツールはlxmlです。 XMLタグ内の値で

<note> 
    <to>Tove</to> 
    <from>Jani</from> 
    <heading>Reminder</heading> 
    <body>Don't forget me this weekend!</body> 
</note> 

私がいる問題は、私はすべてに出くわしているチュートリアルや質問は次のようにXML文書の形式があると仮定していることです。しかし

- 私は、タグの要素内の値を持っているから取り出すので、同じようにしようとしています文書:

xml_file = lxml.etree.parse("test.xml") 

notes = xml_file.xpath("//note") 

for note in notes: 
    note_id = note.find("id").text 
    print note_id 

<note> 
    <to id="16" name="Tove"/> 
    <from id="341" name"Jani"/> 
    <heading id="1" name="Reminder"/> 
    <body id="2" name="Don't forget me this weekend!"/> 
</note> 

私はLXMLでこれをやって試してみました方法はこれです

これはちょうど "なし"を返します

私は今.textがXMLタグの中からデータを取得していることを発見しました - しかし、私は単純にデータを取得する方法を見つけることができません上記の要素。

誰もが正しい方向に私を指すもらえますか?

答えて

1

属性にアクセスするには、ます。attribを使用する必要があります。

xml_file = lxml.etree.parse("test.xml") 

notes = xml_file.xpath("//note") 

for note in notes: 
    print [ x.attrib for x in note.getchildren() ] 

もっと読み:http://lxml.de/tutorial.html#elements-carry-attributes-as-a-dict

+0

私はこれをしようとしていますし、私はエラーを取得する - 「NoneType」オブジェクトが属性「ATTRIB」を持っていません - – drew

+0

右、私は間違いを犯しました - タグの属性を "to"にする方法をコードで修正しました。 – bluszcz

+0

実際に私は別の編集を行いました。あなたはgetchildrenを使用して子を反復処理してから属性を取得できます。 – bluszcz

関連する問題