下面的代碼產生一個錯誤,如果只有一個「車」,在「車庫」:xmltodict不返回一個列表,一個元素
import xmltodict
mydict = xmltodict.parse(xmlstringResults)
for carsInGarage in mydict['garage']['car']:
# do something...
的原因是,mydict['garage']['car']
只有當列表有不止是「汽車」的一個元素。所以我做了這樣的事情:
import xmltodict
mydict = xmltodict.parse(xmlstringResults)
if isinstance(mydict['garage']['car'], list):
for carsInGarage in mydict['garage']['car']:
# do something for each car...
else:
# do something for the car
讓代碼運行。但對於更高級的操作,這不是解決方案。
有人知道使用某種功能,即使只有一個元素?
不要使用像'dict'這樣的保留關鍵字作爲變量名! – Jens
如果['xmltodict'](https://github.com/martinblech/xmltodict)返回一輛汽車或一輛汽車列表,您的解決方案是合適的(請參閱[duck typing](https://en.wikipedia) .org/wiki/Duck_typing)在Python中)。但是請記住,XML是有序的,生成的JSON使用了一個無序的'dict'!是否有任何理由不直接使用XML,例如與[lxml](http://lxml.de/)? – Jens
在我的真實代碼中,它有不同的名稱,但我也修復了代碼上面的代碼,謝謝。 - 我第一次嘗試使用ElementTree,但是我遇到了一些編碼問題...我也許這種方式更好...也許我錯了 – user2111880