gpt4 book ai didi

python-3.x - 有没有办法使用 ElementTree 注册多个命名空间

转载 作者:行者123 更新时间:2023-12-04 10:28:04 24 4
gpt4 key购买 nike

根据文档,似乎一次只能注册一个命名空间。

xml.etree.ElementTree.register_namespace(prefix, uri)

Registers a namespace prefix. The registry is global, and any existing mapping for either the given prefix or the namespace URI will be removed. prefix is a namespace prefix. uri is a namespace uri. Tags and attributes in this namespace will be serialized with the given prefix, if at all possible.

但是我很好奇是否有人知道解决这个问题的方法?如果没有什么合理的地方,我就换成lxml。

最佳答案

您可以注册多个命名空间,但不能在一次调用 register_namespace() 中注册。

您必须为每个命名空间单独调用 register_namespace()。

例子...

import xml.etree.ElementTree as ET

ns_map = {"foo": "urn::foo",
"bar": "urn::bar"}

for prefix, uri in ns_map.items():
ET.register_namespace(prefix, uri)

root = ET.Element(ET.QName(ns_map["foo"], "root"))
ET.SubElement(root, ET.QName(ns_map["bar"], "child"))

print(ET.tostring(root).decode())

打印...

<foo:root xmlns:bar="urn::bar" xmlns:foo="urn::foo"><bar:child /></foo:root>

还有...

If there's nothing reasonable, I will switch to lxml.

无论如何我都会切换到 lxml。 :-)

关于python-3.x - 有没有办法使用 ElementTree 注册多个命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60551287/

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