利用 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格式化字符串实例总结
Sep 28 Python
跟老齐学Python之Import 模块
Oct 13 Python
详解Python中的元组与逻辑运算符
Oct 13 Python
python爬虫实战之爬取京东商城实例教程
Apr 24 Python
Python2中文处理纪要的实现方法
Mar 10 Python
Python3.6实现连接mysql或mariadb的方法分析
May 18 Python
使用Python对微信好友进行数据分析
Jun 27 Python
Python实现多级目录压缩与解压文件的方法
Sep 01 Python
python求解数组中两个字符串的最小距离
Sep 27 Python
pytz格式化北京时间多出6分钟问题的解决方法
Jun 21 Python
Python使用扩展库pywin32实现批量文档打印实例
Apr 09 Python
使用Python实现音频双通道分离
Dec 25 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
PHP页面间参数传递的四种方法详解
2013/06/09 PHP
一个显示效果非常不错的PHP错误、异常处理类
2014/03/21 PHP
ThinkPHP自动填充实现无限级分类的方法
2014/08/22 PHP
PHPStorm 2020.1 调试 Nodejs的多种方法详解
2020/09/17 NodeJs
javscript对象原型的一些看法
2010/09/19 Javascript
javascript操作表格排序实例分析
2015/05/06 Javascript
js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
2015/11/09 Javascript
js实现接收表单的值并将值拼在表单action后面的方法
2015/11/23 Javascript
JavaScript电子时钟倒计时
2016/01/09 Javascript
解决jQuery ajax请求在IE6中莫名中断的问题
2016/06/20 Javascript
微信小程序实现表单校验功能
2020/03/30 Javascript
一种angular的方法级的缓存注解(装饰器)
2018/03/13 Javascript
Vue项目路由刷新的实现代码
2019/04/17 Javascript
vue中使用vue-print.js实现多页打印
2020/03/05 Javascript
vue实现匀速轮播效果
2020/06/29 Javascript
vue实现简单的登录弹出框
2020/10/26 Javascript
[02:20]2014DOTA2西雅图邀请赛 MVP外卡赛首胜采访
2014/07/09 DOTA
[03:27]《辉夜杯》线下训练营 导师CU和海涛指点迷津
2015/10/23 DOTA
python生成随机密码或随机字符串的方法
2015/07/03 Python
python实现报表自动化详解
2017/11/16 Python
python logging.info在终端没输出的解决
2020/05/12 Python
CSS3五个技巧给你的网站带来出色的效果
2009/04/02 HTML / CSS
完美解决IE8下不兼容rgba()的问题
2017/03/31 HTML / CSS
英国乐购杂货:Tesco Groceries
2018/11/29 全球购物
StubHub新西兰:购买和出售你的门票
2019/04/22 全球购物
高中生毕业自我鉴定
2013/10/10 职场文书
工程业务员工作职责
2013/12/07 职场文书
教师一岗双责责任书
2014/04/16 职场文书
电力安全事故反思
2014/04/27 职场文书
优秀员工自荐书
2015/03/06 职场文书
社区安置帮教工作总结2015
2015/05/20 职场文书
社区宣传标语口号
2015/12/26 职场文书
温馨祝福晨语:美丽的一天从我的问候开始
2019/11/28 职场文书
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
2021/05/31 Python
java后台调用接口及处理跨域问题的解决
2022/03/24 Java/Android
win10双系统怎么删除一个系统?win10电脑有两个系统删除一个的操作方法
2022/07/15 数码科技