私はこの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。アイテムのすべてのアイテムを取得するループを作成するにはどうすればよいですか?おかげ (出力): アイテム{ 'LIST_PRICE':16.5、 '説明': '偽'、 '体重':0.0、 'DEFAULT_CODE': ':18' UOM Uは、ID ' '''「ユニット( ')'、 '名前': 'iPod'}
有効なXML文書を投稿できますか?これにはいくつかのエラーがあります。例えば、何の終了タグは、注文のために、最初の「項目」タグなどはありません。ここ –
がフルorder.xmlドキュメント あるhttps://pastebin.com/sUsbRqAz –
あなたは、XMLを使用し、XMLライブラリを経由して、それを処理するか、またはjsonを使い、処理のためにdictに変換してください。処理のためにxmlをdictに変換することは、通常は悪い考えです。 – marbu