xmltodict:未获取正确的嵌套元素

xmltodict: Not fetching correct nested elements

所以我有一个 XML 这样的:

<main>
   <site>Amazon</site>
   <url>..</url>
    <books>
    <book>
        <id>1</id>
        <author>Jhon</author>
    </book>
    <book>
        <id>2</id>
        <author>Jhon</author>
    </book>
    <book>
        <id>3</id>
        <author>Jhon</author>
    </book>
    </books>
</main>

我正在访问它:

document = xmltodict.parse(xml)
books = document['books]['book'] #returns 3
for book in books:
   pass

但是如果 XML 就像:

<books>
 <book>
    <id>3</id>
    <author>Jhon</author>
 </book>
</books>

然后 1 它 returns 2 即 child of <books>

我做错了什么?

这是 xmltodict 的常见问题,已在此处讨论:

此行为的解决方法是使用 force_list 选项(目前在 master 分支中可用):

xmltodict.parse(data, force_list={'books': 'book'})