【发布时间】:2014-12-15 15:10:17
【问题描述】:
我正在使用 xmltodict 来解析 XML 配置。 XML 具有结构,其中一个元素可以出现在 1 到 n 个实例中,其中两个都是有效的:
<items>
<item-ref>abc</item-ref>
</items>
和
<items>
<item-ref>abc</item-ref>
<item-ref>dca</item-ref>
<item-ref>abb</item-ref>
</items>
我用 xmltodict 解析这个如下:
document['items']['item-ref']
它会返回一个 unicode 或一个列表(取决于找到的项目),所以我总是需要添加一个额外的检查来确保我是否需要处理一个列表或一个字符串:
if isinstance(document['items']['item-ref'], list):
my_var = document['items']['item-ref']
else:
my_var = [document['items']['item-ref']] #create list manually
是否有更好/更简单/更优雅的方式来处理这些问题?
【问题讨论】:
-
遇到了同样的问题,并检查了所有内容:)
-
如果你想让你的手有点脏,你可以修补
xmltodict.py。有一个方法,_DictSAXHandler.push_data,它决定哪些元素变成列表。您可以更改参数,以便您可以将一组元素传递给解析器总是变成一个列表。