gpt4 book ai didi

python - 如何使用 lxml 在 XML 元素名称中使用 ":"?

转载 作者:太空宇宙 更新时间:2023-11-04 07:44:44 24 4
gpt4 key购买 nike

如何使用 lxml 生成和解析如下所示的 XML?

<s:Envelope xmlns:s="a" xmlns:a="http_//www.w3.org/2005/08/addressing">
....
</s:Envelope>

我目前在解析和生成 XML 时交换元素名称中的 : 和 _,但这看起来很愚蠢。

最佳答案

目前还不清楚你到底在问什么,但也许这会有所帮助:

一个元素,例如 <s:Envelope>正在使用 XML namespace 前缀。这用于指示 s:Envelope本文档中的属性在 a 中定义命名空间。

LXML 在大括号中使用 namespace 前缀表示 XML namespace ,例如:{a}Envelope .您的示例文档有点令人困惑,因为您还定义了 a:命名空间前缀,所以:

  • a:Element相当于{http://www.w3.org/2005/08/addressing}Element , 和
  • s:Element相当于{a}Element .

许多 LXML 命令允许您提供命名空间前缀映射。例如,要查找 Envelope使用 XPATH 在您的文档中添加元素,您可以这样做:

import lxml.etree as etree
doc = etree.parse('mydocument.xml')
envelope = doc.xpath('//s:Envelope',
namespaces={'s': 'a'})

请注意,这完全等同于:

envelope = doc.xpath('//x:Envelope',
namespaces={'x': 'a'})

也就是说,命名空间前缀 不必与源 XML 文档中使用的相匹配;只有绝对命名空间很重要。

您可以阅读有关 LXML 和 namespace 的更多信息 here .

关于python - 如何使用 lxml 在 XML 元素名称中使用 ":"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10416693/

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