利用 Python ElementTree 生成 xml的实例


Posted in Python onMarch 06, 2020

Python 处理 xml 文档的方法有很多,除了经典的 sax 和 dom 之外,还有一个 ElementTree。

首先 import 之:

from xml.etree import ElementTree as etree

然后开始构建 xml 树:

from xml.etree.ElementTree import Element, SubElement, ElementTree
 
# 生成根节点
root = Element('root')
# 生成第一个子节点 head
head = SubElement(root, 'head')
# head 节点的子节点
title = SubElement(head, 'title')
title.text = 'Well Dola!'
# 生成 root 的第二个子节点 body
body = SubElement(root, 'body')
# body 的内容
body.text = 'I love Dola!'
tree = ElementTree(root)

这样就得到了一个 xml 树的对象 tree 以及它的根节点的对象 root

接着我们把它们变成 xml 串,有两个办法,一个是用 tree 对象的 write 方法将 xml 内容写成一个文件,还有一个是用 etree 的 tostring 方法转成 xml 字符串:

# 第一种
tree.write('result.xml', encoding='utf-8')
# 第二种
xml_string = etree.tostring(root)
# xml_string 就是 xml 字符串了

但是第二种有一个问题,就是它没有

<?xml version="1.0"?>

这个头部定义内容:

'<root><head><title>Well Dola!</title></head><body>I love Dola!</body></root>'

怎么办呢?

有一个办法是使用 minidom 来实现,方法如下:

from xml.dom import minidom
# 使用 minidom 解析
tree = minidom.parseString(xml_string)
# 重新生成 xml 字符串
xml_string = tree.toxml()

虽然让计算机多运行了一些代码,但是这样可以把问题解决掉。

最后生成的 xml 代码如下:

u'<?xml version="1.0" ?><root><head><title>Well Dola!</title></head><body>I love Dola!</body></root>'

当然还可以使用 minidom 中 tree 对象的 toprettyxml 方法把 xml 打得漂亮一点。

补充知识:Python ElementTree 导出 xml 缺少 开头声明

使用ElementTree修改完xml后,写入文件时,发现开头缺少了 <?xml version='1.0' encoding='utf-8'?>

解决办法:

在调用ElementTree的write方法写入xml时,参数里增加 encoding=‘utf-8' 以及 xml_declaration=True

et_root.write('file。xml', encoding='utf-8', xml_declaration=True)

以上这篇利用 Python ElementTree 生成 xml的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用Python编写脚本使IE实现代理上网的教程
Apr 23 Python
用Python操作字符串之rindex()方法的使用
May 19 Python
mac系统安装Python3初体验
Jan 02 Python
Python之reload流程实例代码解析
Jan 29 Python
使用Python读取大文件的方法
Feb 11 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
Apr 18 Python
基于Python log 的正确打开方式
Apr 28 Python
详解Python的数据库操作(pymysql)
Apr 04 Python
Django学习笔记之为Model添加Action
Apr 30 Python
解决.ui文件生成的.py文件运行不出现界面的方法
Jun 19 Python
python进度条显示-tqmd模块的实现示例
Aug 23 Python
Python爬取股票信息,并可视化数据的示例
Sep 26 Python
Python3 xml.etree.ElementTree支持的XPath语法详解
Mar 06 #Python
python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例
Mar 06 #Python
Python yield的用法实例分析
Mar 06 #Python
用Python生成HTML表格的方法示例
Mar 06 #Python
使用Python第三方库pygame写个贪吃蛇小游戏
Mar 06 #Python
Python修改列表值问题解决方案
Mar 06 #Python
浅谈matplotlib.pyplot与axes的关系
Mar 06 #Python
You might like
关于session在PHP5的配置文件中的详细设置参数说明
2011/04/20 PHP
如何使用“PHP” 彩蛋进行敏感信息获取
2013/08/07 PHP
CodeIgniter上传图片成功的全部过程分享
2013/08/12 PHP
2个比较经典的PHP加密解密函数分享
2014/07/01 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
PHP实现的抓取小说网站内容功能示例
2019/06/27 PHP
使用dynatrace-ajax跟踪JavaScript的性能
2010/04/12 Javascript
Knockout数组(observable)使用详解示例
2013/11/15 Javascript
JavaScript实现的使用键盘控制人物走动实例
2014/08/27 Javascript
Enter回车切换输入焦点实现思路与代码兼容各大浏览器
2014/09/01 Javascript
JavaScript中的方法调用详细介绍
2014/12/30 Javascript
js事件监听器用法实例详解
2015/06/01 Javascript
PHP结合jQuery实现的评论顶、踩功能
2015/07/22 Javascript
JS函数多个参数默认值指定方法分析
2016/11/28 Javascript
vue多层嵌套路由实例分析
2019/03/19 Javascript
详解在网页上通过JS实现文本的语音朗读
2019/03/28 Javascript
JavaScript面向对象编程小游戏---贪吃蛇代码实例
2019/05/15 Javascript
小程序实现搜索框功能
2020/03/26 Javascript
微信小程序以ssm做后台开发的实现示例
2020/04/08 Javascript
python利用装饰器进行运算的实例分析
2015/08/04 Python
简单谈谈python中的语句和语法
2017/08/10 Python
vscode 远程调试python的方法
2017/12/01 Python
对python中数组的del,remove,pop区别详解
2018/11/07 Python
在Python中利用pickle保存变量的实例
2019/12/30 Python
基于python连接oracle导并出数据文件
2020/04/28 Python
Python爬虫后获取重定向url的两种方法
2021/01/19 Python
python中的插入排序的简单用法
2021/01/19 Python
HTML5中判断横屏竖屏的方法(移动端)
2016/08/04 HTML / CSS
UDP协议功能
2013/01/06 面试题
什么是虚拟内存?虚拟内存有什么优势?
2012/02/19 面试题
用JAVA实现一种排序,JAVA类实现序列化的方法(二种)
2014/04/23 面试题
拖鞋店创业计划书
2014/01/15 职场文书
企业办公室岗位职责
2014/03/12 职场文书
商务考察邀请函模板
2015/02/02 职场文书
详解Spring Boot使用系统参数表提升系统的灵活性
2021/06/30 Java/Android
Java 在生活中的 10 大应用
2021/11/02 Java/Android