在python中处理来自XML标签的数据

时间:2017-10-25 20:31:06

标签: python xml django lxml

我正在尝试使用python从XML文档中提取数据。

我目前正在尝试的工具似乎是一个稳定的选择lxml

我遇到的问题是我遇到的教程和问题都假设XML文档的格式如下:

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

使用XML标记内的值。

然而 - 我试图从中提取的文档在标记的元素内部具有值,如下所示:

<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中尝试这样做的方法是:

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

这只返回“无”

我现在发现.text是从XML标签内部获取数据的东西 - 但是我根本找不到如何从上面显示的元素中获取数据。

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分: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