如果您以obj['NewDataSet']['Root'][0]['Phonetic'],IMO的身份访问它,那么您做得不对。
相反,您可以执行以下操作obj = obj["NewDataSet"]
root_elements = obj["Root"] if type(obj) == OrderedDict else [obj["Root"]]
# Above step ensures that root_elements is always a list
for element in root_elements:
print element["Phonetic"]
尽管这段代码看起来要长得多,但它的优点是,一旦开始处理足够大的xml,它将变得更加紧凑和模块化。
注:我对xmltodict也有同样的问题。但是,与使用xml.etree.ElementTree来解析xml文件进行解析不同,xmltodict更容易使用,因为代码基更小,而且我不必处理xml模块的其他无用之处。
编辑
以下代码对我有效import xmltodict
from collections import OrderedDict
xmldata = """
and
nd
0
8262
comfortable
comfetebl
adj
61404
72624
"""
obj = xmltodict.parse(xmldata)
obj = obj["NewDataSet"]
root_elements = obj["Root"] if type(obj) == OrderedDict else [obj["Root"]]
# Above step ensures that root_elements is always a list
for element in root_elements:
print element["Phonetic"]