簡體   English   中英

在 xmltodict.unparse output 中包含命名空間

[英]Include namespace in xmltodict.unparse output

我使用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函數的源代碼中的所有關鍵字 arguments。 我想preprocessor參數將是更好解決方案的關鍵。 但它沒有記錄。

不好,也不是添加所有命名空間的通用解決方案,但可以。

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>

替換 function 中的第三個參數確保不會替換其他出現的"REPLACE_THIS" ,只會替換第一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM