利用 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 实现堆排序算法代码
Jun 05 Python
Python自定义scrapy中间模块避免重复采集的方法
Apr 07 Python
python实现读取excel写入mysql的小工具详解
Nov 20 Python
Python实现两款计算器功能示例
Dec 19 Python
深入flask之异步非堵塞实现代码示例
Jul 31 Python
python使用Paramiko模块实现远程文件拷贝
Apr 30 Python
python实现美团订单推送到测试环境,提供便利操作示例
Aug 09 Python
Python解压 rar、zip、tar文件的方法
Nov 19 Python
pytorch中的inference使用实例
Feb 20 Python
keras实现多GPU或指定GPU的使用介绍
Jun 17 Python
keras中的History对象用法
Jun 19 Python
Python作用域和名称空间的详细介绍
Apr 13 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的控制语句
2006/10/09 PHP
PHP 数组教程 定义数组
2009/10/23 PHP
php读取远程gzip压缩网页的方法
2014/12/29 PHP
PHP翻页跳转功能实现方法
2020/11/30 PHP
基于PHP实现商品成交时发送短信功能
2016/05/11 PHP
详解php中serialize()和unserialize()函数
2017/07/08 PHP
PHP实现的折半查询算法示例
2017/10/09 PHP
最佳6款用于移动网站开发的jQuery 图片滑块插件小结
2012/07/20 Javascript
对于this和$(this)的个人理解
2013/09/08 Javascript
JS、DOM和JQuery之间的关系示例分析
2014/04/09 Javascript
改变状态栏文字的js代码
2014/06/13 Javascript
node.js中的http.response.write方法使用说明
2014/12/14 Javascript
jQuery使用hide方法隐藏指定元素class样式用法实例
2015/03/30 Javascript
jquery+css实现的红色线条横向二级菜单效果
2015/08/22 Javascript
快速掌握jQuery插件开发
2017/01/19 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
2017/01/20 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
2017/02/13 Javascript
浅谈原型对象的常用开发模式
2017/07/22 Javascript
JS伪继承prototype实现方法示例
2018/06/20 Javascript
javascript实现京东登录显示隐藏密码
2020/08/02 Javascript
解决vue安装less报错Failed to compile with 1 errors的问题
2020/10/22 Javascript
python实现装饰器、描述符
2018/02/28 Python
Pycharm之快速定位到某行快捷键的方法
2019/01/20 Python
python如何制作缩略图
2019/04/30 Python
python创建与遍历List二维列表的方法
2019/08/16 Python
Python如何在DataFrame增加数值
2020/02/14 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
2020/08/04 Python
HTML5 Geolocation API的正确使用方法
2018/12/04 HTML / CSS
20佳惊艳的HTML5应用程序示例分享
2011/05/03 HTML / CSS
一家专门经营包包的英国网站:MyBag
2019/09/08 全球购物
深圳茁壮笔试题
2015/05/28 面试题
最新大学生创业计划书写作攻略
2014/04/02 职场文书
无刑事犯罪记录证明范本
2014/09/29 职场文书
药店采购员岗位职责
2014/09/30 职场文书
2014年党风廉政建设工作总结
2014/11/19 职场文书