【问题标题】:xmltodict: Not fetching correct nested elementsxmltodict:未获取正确的嵌套元素
【发布时间】:2016-04-08 04:48:28
【问题描述】:

所以我有一个这样的 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>

然后返回 2 而不是 1,它是 &lt;books&gt;

的子级

我做错了什么?

【问题讨论】:

    标签: python python-2.7 xmltodict


    【解决方案1】:

    这是xmltodict 的常见问题,这里讨论过:

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

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

    【讨论】:

    • 嗯,很有趣。它搞砸了其他一切:books = document['books]['book'] 不再工作了;给出错误list indices must be integers, not str
    • @Volatil3 是的,现在它总是一个列表:[book['author'] for book in document['books']]..但我实际上觉得它更合乎逻辑..
    • 我应该把整个 XML。我刚刚更新了 Qs,也没有迭代元素,从我所看到的来看,它似乎破坏了整个格式
    • github.com/martinblech/xmltodict/issues/… 应该对我有用,但现在将 force_list 称为无效关键字
    • 好的,我通过sudo pip install git+https://github.com/martinblech/xmltodict.git@master 安装最新版本,它就像魅力一样工作
    猜你喜欢
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 2019-07-06
    • 1970-01-01
    相关资源
    最近更新 更多