我正在尝试使用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标签内部获取数据的东西 - 但是我根本找不到如何从上面显示的元素中获取数据。
有人能指出我正确的方向吗?
答案 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