利用 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的chardet库获得文件编码并修改编码
Jan 22 Python
python使用calendar输出指定年份全年日历的方法
Apr 04 Python
Python实现统计单词出现的个数
May 28 Python
Django框架下在视图中使用模版的方法
Jul 16 Python
python实现简单中文词频统计示例
Nov 08 Python
关于Tensorflow中的tf.train.batch函数的使用
Apr 24 Python
python+flask实现API的方法
Nov 21 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
Feb 27 Python
Django如何实现上传图片功能
Aug 16 Python
使用python快速在局域网内搭建http传输文件服务的方法
Nov 14 Python
Python virtualenv虚拟环境实现过程解析
Apr 18 Python
python爬取2021猫眼票房字体加密实例
Feb 19 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
如何跨站抓取别的站点的页面的补充
2006/10/09 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
2012/09/07 PHP
php实现aes加密类分享
2014/02/16 PHP
Yii2验证器(Validator)用法分析
2016/07/23 PHP
thinkphp实现附件上传功能
2017/05/26 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
2018/04/09 PHP
PHP getDocNamespaces()函数讲解
2019/02/03 PHP
js 多浏览器分别判断代码
2010/04/01 Javascript
JQuery从头学起第二讲
2010/07/04 Javascript
关于jquery动态增减控件的一些想法和小插件
2010/08/01 Javascript
JavaScript 代码压缩工具小结
2012/02/27 Javascript
js数组去重的常用方法总结
2014/01/24 Javascript
首页图片漂浮效果示例代码
2014/06/05 Javascript
以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题
2015/11/13 Javascript
JS显示日历和天气的方法
2016/03/01 Javascript
javascript高级选择器querySelector和querySelectorAll全面解析
2016/04/07 Javascript
jQuery点击其他地方时菜单消失的实现方法
2016/04/22 Javascript
jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
2016/06/07 Javascript
jQuery实现标签页效果实战(4)
2017/02/08 Javascript
详细分析Node.js 模块系统
2020/06/28 Javascript
微信小程序基于高德地图API实现天气组件(动态效果)
2020/10/22 Javascript
Python脚本实现网卡流量监控
2015/02/14 Python
使用pdb模块调试Python程序实例
2015/06/02 Python
Python实现字典依据value排序
2016/02/24 Python
pthon贪吃蛇游戏详细代码
2019/01/27 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
如何利用python web框架做文件流下载的实现示例
2020/06/02 Python
你常见到的runtime exception
2016/09/05 面试题
介绍一下Linux文件的记录形式
2013/09/29 面试题
银行存款证明样本
2014/01/17 职场文书
医校毕业生自我鉴定
2014/01/25 职场文书
师范教师专业大学生职业生涯规划范文
2014/03/02 职场文书
企业年检委托书范本
2014/10/14 职场文书
乒乓球比赛通知
2015/04/27 职场文书
分析SQL窗口函数之排名窗口函数
2022/04/21 Oracle