利用 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中的exec、eval使用实例
Sep 23 Python
Python的re模块正则表达式操作
May 25 Python
Python中functools模块的常用函数解析
Jun 30 Python
python去重,一个由dict组成的list的去重示例
Jan 21 Python
pandas去重复行并分类汇总的实现方法
Jan 29 Python
numpy 声明空数组详解
Dec 05 Python
在keras中获取某一层上的feature map实例
Jan 24 Python
Django User 模块之 AbstractUser 扩展详解
Mar 11 Python
Python文件时间操作步骤代码详解
Apr 13 Python
解决TensorFlow调用Keras库函数存在的问题
Jul 06 Python
python音频处理的示例详解
Dec 23 Python
Python语言中的数据类型-序列
Feb 24 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 咖啡文化
BBS(php &amp; mysql)完整版(五)
2006/10/09 PHP
PHP函数microtime()用法与说明
2013/12/04 PHP
php自定义hash函数实例
2015/05/05 PHP
thinkPHP js文件中U方法不被解析问题的解决方法
2016/12/05 PHP
阿里云的WindowsServer2016上部署php+apache
2018/07/17 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
2020/08/07 PHP
表单提交验证类
2006/07/14 Javascript
用脚本调用样式的几种方法
2006/12/09 Javascript
JQuery 写的个性导航菜单
2009/12/24 Javascript
style、 currentStyle、 runtimeStyle区别分析
2010/08/01 Javascript
解析Javascript中难以理解的11个问题
2013/12/09 Javascript
JavaScript中判断整字类型最简洁的实现方法
2014/11/08 Javascript
Jquery 1.9.1源码分析系列(十二)之筛选操作
2015/12/02 Javascript
AngularJS 表达式详细讲解及实例代码
2016/07/26 Javascript
js前端日历控件(悬浮、拖拽、自由变形)
2017/03/02 Javascript
微信小程序获取用户openid的实现
2018/12/24 Javascript
jquery层次选择器的介绍
2019/01/18 jQuery
layui使用表格渲染获取行数据的例子
2019/09/13 Javascript
如何正确理解vue中的key详解
2019/11/02 Javascript
在vue中axios设置timeout超时的操作
2020/09/04 Javascript
python封装对象实现时间效果
2020/04/23 Python
详解Python的Django框架中的templates设置
2015/05/11 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
2017/09/26 Python
django基于存储在前端的token用户认证解析
2019/08/06 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
2020/03/23 Python
使用python创建Excel工作簿及工作表过程图解
2020/05/27 Python
Dune London官网:英国著名奢华鞋履品牌
2017/11/30 全球购物
阿迪达斯法国官方网站:adidas法国
2018/03/20 全球购物
工作说明书格式
2014/07/29 职场文书
2014市府办领导班子“四风问题”对照检查材料思想汇报
2014/09/24 职场文书
2014年学习委员工作总结
2014/11/14 职场文书
2014年财务个人工作总结
2014/12/08 职场文书
2015年大学生入党自荐书
2015/03/24 职场文书
红高粱观后感
2015/06/10 职场文书
Python selenium的这三种等待方式一定要会!
2021/06/10 Python