我使用xmltodict将Python转换为XML。我想包括名称空间。我想出的是:
xml_dict = {
    "http://namespace.org:workflow":
        {"action-list": "..."}
}
namespaces = {"http://namespace.org": "ws"}
xml = xmltodict.unparse(xml_dict, namespaces=namespaces,
                        pretty=True, short_empty_elements=True, full_document=False)这给了我一个结果:
<ws:workflow>
    <action-list>...</action-list>
</ws:workflow>如何在结果中包含名称空间?我想要这样的:
<ws:workflow xmlns:ws="http://namespace.org">有使用xmltodict的简单解决方案吗?
注意:我检查了unparse和_emit函数源代码中的所有关键字参数。我想preprocessor参数将是找到更好解决方案的关键。但没有记录在案。
发布于 2022-09-07 07:13:41
不是很好,也不是添加所有名称空间的通用解决方案,但是很有效。
import xmltodict
xml_dict = {
    "http://namespace.org:workflow":
        {
            "@REPLACE_THIS": "http://namespace.org",
            "action-list": "..."
        }
}
namespaces = {"http://namespace.org": "ws"}
xml = xmltodict.unparse(xml_dict, namespaces=namespaces, pretty=True, short_empty_elements=True, full_document=False)
xml = xml.replace("REPLACE_THIS", "xmlns:ws", 1)
print(xml)这正好给了我我想要的
<ws:workflow xmlns:ws="http://namespace.org">
    <action-list>...</action-list>
</ws:workflow>替换函数中的第三个参数确保不会替换其他出现的"REPLACE_THIS",只替换第一个。
https://stackoverflow.com/questions/73612061
复制相似问题