Python 3.x 有没有办法使用ElementTree注册多个名称空间

Python 3.x 有没有办法使用ElementTree注册多个名称空间,python-3.x,xml,namespaces,elementtree,Python 3.x,Xml,Namespaces,Elementtree,根据文档,似乎一次只能注册一个名称空间 注册命名空间前缀。注册表是全局的,任何现有的 将创建给定前缀或命名空间URI的映射 远离的。前缀是名称空间前缀。uri是一个名称空间uri。 此命名空间中的标记和属性将使用 如果可能的话,给出前缀 但我很好奇是否有人知道这件事?如果没有合理的理由,我将切换到lxml。您可以注册多个名称空间,但不能在一次调用register_namespace()中注册 您必须分别调用以为每个名称空间注册_namespace() 例如 将xml.etree.Element

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

注册命名空间前缀。注册表是全局的,任何现有的 将创建给定前缀或命名空间URI的映射 远离的。前缀是名称空间前缀。uri是一个名称空间uri。 此命名空间中的标记和属性将使用 如果可能的话,给出前缀


但我很好奇是否有人知道这件事?如果没有合理的理由,我将切换到lxml。

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

您必须分别调用以为每个名称空间注册_namespace()

例如

将xml.etree.ElementTree作为ET导入
ns_map={“foo”:“urn::foo”,
“bar”:“urn::bar”}
对于前缀,ns_map.items()中的uri:
ET.register\u名称空间(前缀,uri)
root=ET.Element(ET.QName(ns_-map[“foo”],“root”))
ET.SubElement(根,ET.QName(ns_map[“bar”],“child”))
打印(ET.tostring(root.decode())
印刷品


还有

如果没有什么合理的,我将切换到lxml

无论如何,我会切换到lxml.:-)