利用 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 相关文章推荐
把MySQL表结构映射为Python中的对象的教程
Apr 07 Python
Python 数据结构之堆栈实例代码
Jan 22 Python
Python简单计算文件MD5值的方法示例
Apr 11 Python
python通过伪装头部数据抵抗反爬虫的实例
May 07 Python
python 实时得到cpu和内存的使用情况方法
Jun 11 Python
python利用requests库进行接口测试的方法详解
Jul 06 Python
Python3.4 splinter(模拟填写表单)使用方法
Oct 13 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
Apr 08 Python
解决Jupyter notebook中.py与.ipynb文件的import问题
Apr 21 Python
Keras-多输入多输出实例(多任务)
Jun 22 Python
python实现求纯色彩图像的边框
Apr 08 Python
基于python定位棋子位置及识别棋子颜色
Jul 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
php操作xml入门之cdata区段
2015/01/23 PHP
php实现微信发红包
2015/12/05 PHP
PHP控制反转(IOC)和依赖注入(DI)
2017/03/13 PHP
laravel 5.3中自定义加密服务的方案详解
2017/05/09 PHP
php使用QueryList轻松采集js动态渲染页面方法
2018/09/11 PHP
layui数据表格自定义每页条数limit设置
2019/10/26 PHP
需要做特殊处理的DOM元素属性的访问
2010/11/05 Javascript
jquery实现奇偶行赋值不同css值
2012/02/17 Javascript
JS事件在IE与FF中的区别详细解析
2013/11/20 Javascript
JavaScript-RegExp对象只能使用一次问题解决方法
2014/06/23 Javascript
解决jQuery uploadify在非IE核心浏览器下无法上传
2015/08/05 Javascript
javascript编程异常处理实例小结
2015/11/30 Javascript
JavaScript学习笔记之取数组中最大值和最小值
2016/03/23 Javascript
AngularJS指令详解及示例代码
2016/08/16 Javascript
JavaScript每天必学之事件
2016/09/18 Javascript
Angular2  NgModule 模块详解
2016/10/19 Javascript
Bootstrap如何激活导航状态
2017/03/22 Javascript
jQuery 表单序列化实例代码
2017/06/11 jQuery
javascript修改浏览器title方法 JS动态修改浏览器标题
2017/11/30 Javascript
JS随机数产生代码分享
2018/02/24 Javascript
React BootStrap用户体验框架快速上手
2018/03/06 Javascript
JS获取动态添加元素的方法详解
2019/07/31 Javascript
vue中英文切换实例代码
2020/01/21 Javascript
使用Vant完成Dialog弹框案例
2020/11/11 Javascript
[01:51]2018年度CS GO最具人气外援-完美盛典
2018/12/16 DOTA
python中对list去重的多种方法
2014/09/18 Python
Python openpyxl读取单元格字体颜色过程解析
2019/09/03 Python
VSCode 自定义html5模板的实现
2019/12/05 HTML / CSS
林清轩官方网站:山茶花润肤油开创者
2016/10/26 全球购物
新媒传信软件测试面试题
2013/02/24 面试题
档案室主任岗位职责
2014/02/12 职场文书
项目投资建议书
2014/05/16 职场文书
计划生育证明格式范本
2014/09/12 职场文书
单位法定代表人授权委托书
2014/09/20 职场文书
不遵守课堂纪律的检讨书
2014/09/24 职场文书
信访工作汇报材料
2014/10/27 职场文书