下面的代码产生一个错误,如果只有一个“车”,在“车库”: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