将具有复杂类型的字典转换为xml

时间:2020-07-11 04:55:37

标签: python xml

我有一本名为job_highlight_dict的字典,其中包含{job_id, JobHighlight}

job_id是数字,JobHighlight是如下定义的类型:

class JobHighlight:
    def __init__(self, display_salary, location, category):
        self.display_salary = display_salary
        self.location = location
        self.category = category

我想将job_highlight_dict转换为xml并将其写入磁盘,这是我尝试过的:

xml = dicttoxml.dicttoxml(self.job_highlight_dict)
file = open("export/path_%(time)s.xml", "wb")
file.write(xml)
file.close()

但出现以下错误:

TypeError:不支持的数据类型:(JobHighlight)

1 个答案:

答案 0 :(得分:1)

您将job_highlight_dict["JobHighlight"]类型的JobHighlight转换为字典。

代码

job_highlight_dict["JobHighlight"] = {
    "display_salary": job_highlight_dict["JobHighlight"].display_salary,
    "location": job_highlight_dict["JobHighlight"].location,
    "category": job_highlight_dict["JobHighlight"].category
}
xml = dicttoxml.dicttoxml(job_highlight_dict)
file = open("paths.xml", "wb")
file.write(xml)
file.close()

或更简单地说:

job_highlight_dict["JobHighlight"] = vars(job_highlight_dict["JobHighlight"])
xml = dicttoxml.dicttoxml(job_highlight_dict)
file = open("paths.xml", "wb")
file.write(xml)
file.close()

请参阅:Python dictionary from an object's fields

输出示例

我对此进行了格式化,但是xml在文件中将全部显示在一行上。如果要格式化,则必须使用漂亮的印刷或类似的东西。参见:https://pypi.org/project/dicttoxml/

<?xml version="1.0" encoding="UTF-8" ?>
<root>
    <job_id type="int">2</job_id>
    <JobHighlight type="dict">
        <display_salary type="str">$80k</display_salary>
        <location type="str">Los Angeles</location>
        <category type="str">Other</category>
    </JobHighlight>
</root>