利用 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基于scrapy采集数据时使用代理服务器的方法
Apr 16 Python
Python判断直线和矩形是否相交的方法
Jul 14 Python
python2.7的编码问题与解决方法
Oct 04 Python
Python 中 list 的各项操作技巧
Apr 13 Python
python框架中flask知识点总结
Aug 17 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
Sep 17 Python
tensorflow 20:搭网络,导出模型,运行模型的实例
May 26 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
Jun 02 Python
解决tensorflow读取本地MNITS_data失败的原因
Jun 22 Python
scrapy中如何设置应用cookies的方法(3种)
Sep 22 Python
python模拟点击玩游戏的实例讲解
Nov 26 Python
Python可视化神器pyecharts绘制地理图表
Jul 07 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
解析thinkphp import 文件内容变量失效的问题
2013/06/20 PHP
php 获取SWF动画截图示例代码
2014/02/10 PHP
PHP模板引擎Smarty内建函数详解
2016/04/11 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
2016/08/12 PHP
[原创]php实现 data url的图片生成与保存
2016/12/04 PHP
PHP-FPM和Nginx的通信机制详解
2019/02/01 PHP
PHP如何使用JWT做Api接口身份认证的实现
2020/02/03 PHP
初探jquery——表单应用范例
2007/02/20 Javascript
jQuery使用手册之 事件处理
2007/03/24 Javascript
JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
2010/01/12 Javascript
.net,js捕捉文本框回车键事件的小例子(兼容多浏览器)
2013/03/11 Javascript
js实现页面转发功能示例代码
2013/08/05 Javascript
jquery实现更改表格行顺序示例
2014/04/30 Javascript
使用forever管理nodejs应用教程
2014/06/03 NodeJs
javascript面向对象之this关键词用法分析
2015/01/13 Javascript
原生js结合html5制作小飞龙的简易跳球
2015/03/30 Javascript
使用JavaScriptCore实现OC和JS交互详解
2017/03/28 Javascript
jquery单击文字或图片内容放大并居中显示
2017/06/23 jQuery
深入理解Angular中的依赖注入
2017/06/26 Javascript
Vue 2.0 侦听器 watch属性代码详解
2019/06/19 Javascript
vue表单验证之禁止input输入框输入空格
2020/12/03 Vue.js
从零学python系列之新版本导入httplib模块报ImportError解决方案
2014/05/23 Python
python分割列表(list)的方法示例
2017/05/07 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
python中PS 图像调整算法原理之亮度调整
2019/06/28 Python
PyCharm永久激活方式(推荐)
2020/09/22 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
2020/12/17 Python
Python3使用Selenium获取session和token方法详解
2021/02/16 Python
python中Pexpect的工作流程实例讲解
2021/03/02 Python
智能电子秤、手表和健康监测仪:Withings(之前为诺基亚健康)
2018/10/30 全球购物
SportsDirect.com马来西亚:英国第一体育零售商
2018/11/21 全球购物
荣耀俄罗斯官网:HONOR俄罗斯
2020/10/31 全球购物
中专自荐信
2013/10/13 职场文书
档案工作汇报材料
2014/08/21 职场文书
论群众路线学习心得体会
2014/10/31 职场文书