首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在xmltodict.unparse输出中包含命名空间

在xmltodict.unparse输出中包含命名空间
EN

Stack Overflow用户
提问于 2022-09-05 16:01:24
回答 1查看 54关注 0票数 0

我使用xmltodict将Python转换为XML。我想包括名称空间。我想出的是:

代码语言:javascript
运行
复制
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)

这给了我一个结果:

代码语言:javascript
运行
复制
<ws:workflow>
    <action-list>...</action-list>
</ws:workflow>

如何在结果中包含名称空间?我想要这样的:

代码语言:javascript
运行
复制
<ws:workflow xmlns:ws="http://namespace.org">

有使用xmltodict的简单解决方案吗?

注意:我检查了unparse_emit函数源代码中的所有关键字参数。我想preprocessor参数将是找到更好解决方案的关键。但没有记录在案。

EN

Stack Overflow用户

发布于 2022-09-07 07:13:41

不是很好,也不是添加所有名称空间的通用解决方案,但是很有效。

代码语言:javascript
运行
复制
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)

这正好给了我我想要的

代码语言:javascript
运行
复制
<ws:workflow xmlns:ws="http://namespace.org">
    <action-list>...</action-list>
</ws:workflow>

替换函数中的第三个参数确保不会替换其他出现的"REPLACE_THIS",只替换第一个。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73612061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档