利用 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 相关文章推荐
Pyramid Mako模板引入helper对象的步骤方法
Nov 27 Python
web.py在模板中输出美元符号的方法
Aug 26 Python
python集合是否可变总结
Jun 20 Python
Windows平台Python编程必会模块之pywin32介绍
Oct 01 Python
python实现图片上添加图片
Nov 26 Python
opencv resize图片为正方形尺寸的实现方法
Dec 26 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
Mar 14 Python
Django 允许局域网中的机器访问你的主机操作
May 13 Python
如何用python处理excel表格
Jun 09 Python
python爬虫利用代理池更换IP的方法步骤
Feb 21 Python
python基础学习之生成器与文件系统知识总结
May 25 Python
Python还能这么玩之用Python修改了班花的开机密码
Jun 04 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
咖啡界又出新概念,无需咖啡豆的分子咖啡
2021/03/03 咖啡文化
杏林同学录(三)
2006/10/09 PHP
PHP 工厂模式使用方法
2010/05/18 PHP
php下保存远程图片到本地的办法
2010/08/08 PHP
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
2012/05/16 PHP
基于flush()不能按顺序输出时的解决办法
2013/06/29 PHP
php Imagick获取图片RGB颜色值
2014/07/28 PHP
PHP实现的AES双向加密解密功能示例【128位】
2018/09/03 PHP
JQuery Dialog(JS 模态窗口,可拖拽的DIV)
2010/02/07 Javascript
JS中的substring和substr函数的区别说明
2013/05/07 Javascript
纯Javascript实现Windows 8 Metro风格实现
2013/10/15 Javascript
js动态控制table的tr、td增加及删除的具体实现
2014/04/30 Javascript
jQuery学习笔记之jQuery构建函数的7种方法
2014/06/03 Javascript
node.js中的path.join方法使用说明
2014/12/08 Javascript
JavaScript实现自动对页面上敏感词进行屏蔽的方法
2015/07/27 Javascript
js实现点击获取验证码倒计时效果
2021/01/28 Javascript
jQuery  ready方法实现原理详解
2016/10/19 Javascript
bootstrap table 多选框分页保留示例代码
2017/03/08 Javascript
详解在express站点中使用ejs模板引擎
2017/09/21 Javascript
Vue组件化开发思考
2018/02/02 Javascript
浅谈vuejs实现数据驱动视图原理
2018/02/23 Javascript
koa上传excel文件并解析的实现方法
2018/08/09 Javascript
vue中路由跳转不计入history的操作
2020/09/21 Javascript
[42:24]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第一场 11.01
2020/11/02 DOTA
[07:54]DOTA2-DPC中国联赛 正赛 iG vs VG 选手采访
2021/03/11 DOTA
Python入门篇之面向对象
2014/10/20 Python
介绍Python的@property装饰器的用法
2015/04/28 Python
浅谈numpy生成数组的零值问题
2018/11/12 Python
Python装饰器简单用法实例小结
2018/12/03 Python
利用python将图片版PDF转文字版PDF
2019/05/03 Python
简单了解python 邮件模块的使用方法
2019/07/24 Python
澳大利亚领先的运动鞋商店:Hype DC
2018/03/31 全球购物
中职毕业生自我鉴定
2014/09/13 职场文书
2014年小学安全工作总结
2014/12/04 职场文书
档案接收函格式
2015/01/30 职场文书
2015年挂职锻炼个人总结
2015/10/22 职场文书