利用 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中的高级函数map/reduce使用实例
Apr 13 Python
python 实现上传图片并预览的3种方法(推荐)
Jul 14 Python
python实现简易云音乐播放器
Jan 04 Python
Python读取Excel表格,并同时画折线图和柱状图的方法
Oct 14 Python
python通过tcp发送xml报文的方法
Dec 28 Python
Python使用get_text()方法从大段html中提取文本的实例
Aug 27 Python
python sorted函数原理解析及练习
Feb 10 Python
使用 Python 读取电子表格中的数据实例详解
Apr 17 Python
python pandas dataframe 去重函数的具体使用
Jul 20 Python
用python对oracle进行简单性能测试
Dec 05 Python
python实现xml转json文件的示例代码
Dec 30 Python
Windows安装Anaconda3的方法及使用过程详解
Jun 11 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使用GD实现颜色渐变实例
2015/06/02 PHP
PHP排序算法类实例
2015/06/17 PHP
yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析
2016/01/09 PHP
微信支付开发交易通知实例
2016/07/12 PHP
PHP下用Swoole实现Actor并发模型的方法
2019/06/12 PHP
laravel 实现设置时区的简单方法
2019/10/10 PHP
网页前台通过js非法字符过滤代码(骂人的话等等)
2010/05/26 Javascript
js之onload事件的一点使用心得
2013/08/14 Javascript
两个多选select(multiple左右)添加、删除选项和取值实例
2014/05/12 Javascript
NodeJS学习笔记之Connect中间件模块(二)
2015/01/27 NodeJs
百度UEditor编辑器如何关闭抓取远程图片功能
2015/03/03 Javascript
浅谈javascript基础之客户端事件驱动
2016/06/10 Javascript
运用js教你轻松制作html音乐播放器
2020/04/17 Javascript
关于Node.js的events.EventEmitter用法介绍
2017/04/01 Javascript
基于 Vue.js 之 iView UI 框架非工程化实践记录(推荐)
2017/11/21 Javascript
JS实现仿微信支付弹窗功能
2018/06/25 Javascript
jQuery实现简单复制json对象和json对象集合操作示例
2018/07/09 jQuery
详解小程序输入框闪烁及重影BUG解决方案
2018/08/31 Javascript
LayUI数据接口返回实体封装的例子
2019/09/12 Javascript
javascript+Canvas实现画板功能
2020/06/23 Javascript
[47:02]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS paiN
2018/03/30 DOTA
[02:08]什么藏在DOTA2 TI9“小紫本”里?斧王历险记告诉你!
2019/05/17 DOTA
简单上手Python中装饰器的使用
2015/07/12 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
2018/02/21 Python
Random 在 Python 中的使用方法
2018/08/09 Python
Python中修改字符串的四种方法
2018/11/02 Python
美国最大的宠物用品零售商:PetSmart
2016/11/14 全球购物
美国最大婚纱连锁店运营商:David’s Bridal
2019/03/12 全球购物
化工专业推荐信范文
2013/11/28 职场文书
财务部出纳岗位职责
2013/12/22 职场文书
党员教师群众路线思想汇报范文
2014/10/28 职场文书
房屋买卖协议样本
2014/11/16 职场文书
初三语文教学计划
2015/01/22 职场文书
施工单位工程部经理岗位职责
2015/04/09 职场文书
小学语文教师竞聘演讲稿范文
2019/08/09 职场文书
Java 中的 Unsafe 魔法类的作用大全
2021/06/26 Java/Android