Python每日一练——数据存储第二关:XML文档和字典的互转

99 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天,点击查看活动详情

面试题第二关:

第一部分——考点:

  1. 将字典转换为XML文档;
  2. 将XML文档转换为字典。

第二部分——面试题:

1.面试题一:如何将一个字典转换为XML文档,并将该XML文档保存为文本文件。

2.面试题二:如何读取XML文件的内容,并将其转换为字典。


第三部分——解析:

面试题一 之 如何将一个字典转换为XML文档,并将该XML文档保存为文本文件:

  • 这里需要用到第三方库:dicttoxml。需要安装一下哦~
# coding=utf-8
# _author__ = 孤寒者

import dicttoxml
from xml.dom.minidom import parseString

d = [20, 'name', {'name':'xiaohong', 'age':30, 'salary':500},
                 {'name':'honghong', 'age':34, 'salary':2050},
                 {'name':'lihua',    'age':10, 'salary':1200},
    ]

bxml = dicttoxml.dicttoxml(d, custom_root='persons')    # 注意:此时返回值是二进制类型,所以需要解码哦~
xml = bxml.decode('utf-8')
print(xml)

print("---"*25)
# 美观格式
dom = parseString(xml)
prettyxml = dom.toprettyxml(indent='  ')
print(prettyxml)

# 保存
with open('persons1.xml', 'w', encoding='utf-8') as f:
    f.write(prettyxml)

面试题二 之 如何读取XML文件的内容,并将其转换为字典:

  • 这里需要用到第三方库:xmltodict。需要安装一下哦~

  • 供我们读取的XML文件是products.xml,文件内容如下:

<!-- products.xml -->
<root>
    <products>
        <product uuid='1234'>
            <id>10000</id>
            <name>苹果</name>
            <price>99999</price>
        </product>
        <product uuid='1235'>
            <id>10001</id>
            <name>小米</name>
            <price>999</price>
        </product>
        <product uuid='1236'>
            <id>10002</id>
            <name>华为</name>
            <price>9999</price>
        </product>
    </products>
</root>
# coding=utf-8
# _author__ = 孤寒者
import xmltodict

with open('products.xml', 'rt', encoding='utf-8') as f:
    xml = f.read()
    d = xmltodict.parse(xml)
    print(d)

    print("---" * 25)

    print(type(d))      # 输出为:<class 'collections.OrderedDict'>
                        # 说明此时已经转为字典(排序字典)~
    print("---"*25)
    # 美观格式
    import pprint
    dd = pprint.PrettyPrinter(indent=4)
    dd.pprint(d)

第四部分——总结:

需要两个第三方模块(需安装):

  1. dicttoxml用于将字典转换为XML文档;
  2. xmltodict用于将XML文档转换为字典。

🔆In The End!

👑有关于Me

个人简介:我是一个硬件出身的计算机爱好者,喜欢program,源于热爱,乐于分享技术与所见所闻所感所得。文章涉及Python,C,单片机,HTML/CSS/JavaScript及算法,数据结构等。

从现在做起,坚持下去,一天进步一小点,不久的将来,你会感谢曾经努力的你!

认真仔细看完本文的小伙伴们,可以点赞收藏并评论出你们的读后感。并可关注本博主,在今后的日子里阅读更多技术文哦~

如有错误或者言语不恰当的地方可在评论区指出,谢谢!
如转载此文请联系我征得本人同意,并标注出处及本博主名,谢谢 !