我有这个xml文件,它包含和里面。尽管我只获得第一个,但我无法循环。下面是XML结构和代码:在Python中提取数据XML - > DICT
from lxml import objectify as xml_objectify
contents = open('/home/conacons/Documents/order.xml').read()
def xml_to_dict(xml_str):
""" Convert xml to dict, using lxml v3.4.2 xml processing library """
def xml_to_dict_recursion(xml_object):
dict_object = xml_object.__dict__
if not dict_object:
return xml_object
for key, value in dict_object.items():
dict_object[key] = xml_to_dict_recursion(value)
return dict_object
return xml_to_dict_recursion(xml_objectify.fromstring(xml_str))
xml_dict = xml_to_dict(contents)
#print xml_dict
for item,v in xml_dict['item']['items'].items():
print item,v
<Order>
<item>
<customer></customer>
<status>no</status>
<amount_untaxed>7315.0</amount_untaxed>
<name>Test/001</name>
<confirmation_date>False</confirmation_date>
<order_id>8</order_id>
<items>
<item><list_price>16.5</list_price><description>False</description><weight>0.0</weight><default_code/><id>18</id><uom>Unit(s)</uom> <name>iPod</name></item><item><list_price>12.5</list_price><description>False</description><weight>0.0</weight><default_code>M-Wir</default_code><id>19</id><uom>Unit(s)</uom><name>Mouse, Wireless</name> </item>
Whrn我运行这段代码,我只得到了项目之一。我如何让循环获取项目中的所有项目? THanks (输出): item {'list_price':16.5,'description':'False','weight':0.0,'default_code':u'','id':18,'uom':'单位s)','name':'iPod'
你能发布一个有效的xml文档吗?这一个有一些错误。例如,订单,第一个“item”标签等没有结束标签。 –
以下是完整的order.xml文档 https://pastebin.com/sUsbRqAz –
您可以使用xml并通过xml库处理它或使用json并将其转换为字典进行处理。将xml转换为dict进行处理通常是一个糟糕的主意。 – marbu