利用 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删除nginx缓存文件示例(python文件操作)
Mar 26 Python
python中文编码问题小结
Sep 28 Python
Python编写登陆接口的方法
Jul 10 Python
Python将多个excel文件合并为一个文件
Jan 03 Python
关于python写入文件自动换行的问题
Jun 23 Python
python批量从es取数据的方法(文档数超过10000)
Dec 27 Python
详解django中url路由配置及渲染方式
Feb 25 Python
Django基础三之视图函数的使用方法
Jul 18 Python
Django更新models数据库结构步骤
Apr 01 Python
PyCharm中配置PySide2的图文教程
Jun 18 Python
Python利用Faiss库实现ANN近邻搜索的方法详解
Aug 03 Python
python操作toml文件的示例代码
Nov 27 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编程之高级技巧——利用Mysql函数
2006/10/09 PHP
PHP静态类
2006/11/25 PHP
PHP学习 运算符与运算符优先级
2008/06/15 PHP
php使用fopen创建utf8编码文件的方法
2014/10/31 PHP
php实现学生管理系统
2020/03/21 PHP
PHP中include/require/include_once/require_once使用心得
2016/08/28 PHP
ThinkPHP中Widget扩展的两种写法及调用方法详解
2017/05/04 PHP
利用laravel+ajax实现文件上传功能方法示例
2017/08/13 PHP
php实现解析xml并生成sql语句的方法
2018/02/03 PHP
PHP迭代器和迭代的实现与使用方法分析
2018/04/19 PHP
用javascript实现在小方框中浏览大图的代码
2007/08/14 Javascript
window.name代替cookie的实现代码
2010/11/28 Javascript
jQuery 菜单随滚条改为以定位方式(固定要浏览器顶部)
2012/05/24 Javascript
jQuery拖动div、移动div、弹出层实现原理及示例
2014/04/08 Javascript
angularJS 中$scope方法使用指南
2015/02/09 Javascript
深入php面向对象、模式与实践
2016/02/16 Javascript
Google 地图API资料整理及详细介绍
2016/08/06 Javascript
javascript表单控件实例讲解
2016/09/13 Javascript
Node.js websocket使用socket.io库实现实时聊天室
2017/02/20 Javascript
ECMAScript6--解构
2017/03/30 Javascript
详解React-Native全球化多语言切换工具库react-native-i18n
2017/11/03 Javascript
vue利用axios来完成数据的交互
2018/03/23 Javascript
手写简单的jQuery雪花飘落效果实例
2018/04/22 jQuery
详解ES6中的三种异步解决方案
2018/06/28 Javascript
详解Vue webapp项目通过HBulider打包原生APP(vue+webpack+HBulider)
2019/02/02 Javascript
vue实现条件叠加搜索的解决方法
2019/05/28 Javascript
[02:05]2014DOTA2西雅图邀请赛 专访啸天mik夫妻档
2014/07/08 DOTA
[40:19]2018完美盛典CS.GO表演赛
2018/12/17 DOTA
python里对list中的整数求平均并排序
2014/09/12 Python
Python函数的周期性执行实现方法
2016/08/13 Python
python 中的int()函数怎么用
2017/10/17 Python
amazeui模态框弹出后立马消失并刷新页面
2020/08/19 HTML / CSS
Android interview questions
2016/12/25 面试题
小学生演讲稿
2014/01/12 职场文书
社团活动总结范文
2014/04/26 职场文书
Python中第三方库Faker的使用详解
2022/04/02 Python