前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >40 - xml文档与字典之间的互相转换

40 - xml文档与字典之间的互相转换

原创
作者头像
ruochen
修改2021-05-27 10:40:43
8150
修改2021-05-27 10:40:43
举报
文章被收录于专栏:若尘的技术专栏

1. 如何将一个字典转换为xml文档,并将该xml文档保存成文本文件

代码语言:txt
复制
'''
dicttoxml
pip install dicttixml

'''
import dicttoxml
from xml.dom.minidom import parseString

d = [20, 'names', {'name': 'Bill', 'age': '30', 'salary': 2000},
                  {'name': 'Mike', 'age': '20', 'salary': 3000},
                  {'name': 'John', 'age': '40', 'salary': 4000}]

bxml = dicttoxml.dicttoxml(d, custom_root='persons')
xml = bxml.decode('utf-8')
print(xml)

dom = parseString(xml)
prettyxml = dom.toprettyxml(indent='    ')
print(prettyxml)

f = open('persons1.xml', 'w', encoding='utf-8')
f.write(prettyxml)
f.close()
代码语言:txt
复制
<?xml version="1.0" encoding="UTF-8" ?><persons><item type="int">20</item><item type="str">names</item><item type="dict"><name type="str">Bill</name><age type="str">30</age><salary type="int">2000</salary></item><item type="dict"><name type="str">Mike</name><age type="str">20</age><salary type="int">3000</salary></item><item type="dict"><name type="str">John</name><age type="str">40</age><salary type="int">4000</salary></item></persons>
代码语言:txt
复制
<?xml version="1.0" ?>
代码语言:txt
复制
<persons>
代码语言:txt
复制
    <item type="int">20</item>
代码语言:txt
复制
    <item type="str">names</item>
代码语言:txt
复制
    <item type="dict">
代码语言:txt
复制
        <name type="str">Bill</name>
代码语言:txt
复制
        <age type="str">30</age>
代码语言:txt
复制
        <salary type="int">2000</salary>
代码语言:txt
复制
    </item>
代码语言:txt
复制
    <item type="dict">
代码语言:txt
复制
        <name type="str">Mike</name>
代码语言:txt
复制
        <age type="str">20</age>
代码语言:txt
复制
        <salary type="int">3000</salary>
代码语言:txt
复制
    </item>
代码语言:txt
复制
    <item type="dict">
代码语言:txt
复制
        <name type="str">John</name>
代码语言:txt
复制
        <age type="str">40</age>
代码语言:txt
复制
        <salary type="int">4000</salary>
代码语言:txt
复制
    </item>
代码语言:txt
复制
</persons>
代码语言:txt
复制
<persons>
	<item type="int">20</item>
	<item type="str">names</item>
	<item type="dict">
		<name type="str">Bill</name>
		<age type="str">30</age>
		<salary type="int">2000</salary>
	</item>
	<item type="dict">
		<name type="str">Mike</name>
		<age type="str">20</age>
		<salary type="int">3000</salary>
	</item>
	<item type="dict">
		<name type="str">John</name>
		<age type="str">40</age>
		<salary type="int">4000</salary>
	</item>
</persons>

2. 如何读取xml文档的内容,并将其转换为字典

代码语言:txt
复制
'''
xmltodict
pip install xmltodict
'''

import xmltodict

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

pp = pprint.PrettyPrinter(indent=4)
pp.pprint(d)
print(type(d))
代码语言:txt
复制
OrderedDict([('root', OrderedDict([('products', OrderedDict([('product', [OrderedDict([('@uuid', '1234'), ('id', '10000'), ('name', 'iphone9'), ('price', '9999')]), OrderedDict([('@uuid', '4321'), ('id', '20000'), ('name', '特斯拉'), ('price', '800000')]), OrderedDict([('@uuid', '5678'), ('id', '30000'), ('name', 'Mac Pro'), ('price', '40000')])])]))]))])
代码语言:txt
复制
OrderedDict([   (   'root',
代码语言:txt
复制
                    OrderedDict([   (   'products',
代码语言:txt
复制
                                        OrderedDict([   (   'product',
代码语言:txt
复制
                                                            [   OrderedDict([   (   '@uuid',
代码语言:txt
复制
                                                                                    '1234'),
代码语言:txt
复制
                                                                                (   'id',
代码语言:txt
复制
                                                                                    '10000'),
代码语言:txt
复制
                                                                                (   'name',
代码语言:txt
复制
                                                                                    'iphone9'),
代码语言:txt
复制
                                                                                (   'price',
代码语言:txt
复制
                                                                                    '9999')]),
代码语言:txt
复制
                                                                OrderedDict([   (   '@uuid',
代码语言:txt
复制
                                                                                    '4321'),
代码语言:txt
复制
                                                                                (   'id',
代码语言:txt
复制
                                                                                    '20000'),
代码语言:txt
复制
                                                                                (   'name',
代码语言:txt
复制
                                                                                    '特斯拉'),
代码语言:txt
复制
                                                                                (   'price',
代码语言:txt
复制
                                                                                    '800000')]),
代码语言:txt
复制
                                                                OrderedDict([   (   '@uuid',
代码语言:txt
复制
                                                                                    '5678'),
代码语言:txt
复制
                                                                                (   'id',
代码语言:txt
复制
                                                                                    '30000'),
代码语言:txt
复制
                                                                                (   'name',
代码语言:txt
复制
                                                                                    'Mac '
代码语言:txt
复制
                                                                                    'Pro'),
代码语言:txt
复制
                                                                                (   'price',
代码语言:txt
复制
                                                                                    '40000')])])]))]))])
代码语言:txt
复制
<class 'collections.OrderedDict'>

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 如何将一个字典转换为xml文档,并将该xml文档保存成文本文件
  • 2. 如何读取xml文档的内容,并将其转换为字典
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档