gpt4 book ai didi

python - 在 python 中从 XML 中提取项目列表

转载 作者:行者123 更新时间:2023-12-01 06:10:53 25 4
gpt4 key购买 nike

在 python 中,从以下 xml 中提取项目列表的最佳方法是什么?

<iq xmlns="jabber:client" to="__anonymous__admin@localhost/8978528613056092673206" 
from="conference.localhost" id="disco" type="result">
<query xmlns="http://jabber.org/protocol/disco#items">
<item jid="pgatt@conference.localhost" name="pgatt (1)"/>
<item jid="pgatt@conference.localhost" name="pgatt (1)"/>
</query>
</iq>

我通常将 lxml 与 xpath 一起使用,但在这种情况下它不起作用。我认为我的问题是由于命名空间造成的。我不喜欢 lxml,并且愿意使用任何库。

我想要一个足够强大的解决方案,即使 xml 的一般结构发生变化也不会失败。

最佳答案

我不确定 lxml 但您可以使用 //*[local-name()="item"] 之类的表达式来提取 item 元素,无论其命名空间如何。

您可能还想查看Amara用于 XML 处理。

>>> import amara.bindery
>>> doc = amara.bindery.parse(
... '''<iq xmlns="jabber:client"
... to="__anonymous__admin@localhost/8978528613056092673206"
... from="conference.localhost" id="disco" type="result">
... <query xmlns="http://jabber.org/protocol/disco#items">
... <item jid="pgatt@conference.localhost" name="pgatt (1)"/>
... <item jid="pgatt@conference.localhost" name="pgatt (1)"/>
... </query>
... </iq>''')
>>> for item in doc.iq.query.item:
... print item.jid, item.name
...
pgatt@conference.localhost pgatt (1)
pgatt@conference.localhost pgatt (1)
>>>

一旦我发现了 Amara,我就再也不会考虑以任何其他方式处理 XML。

关于python - 在 python 中从 XML 中提取项目列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5956592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com