利用 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下载懒人图库JavaScript特效
May 28 Python
Python 装饰器实现DRY(不重复代码)原则
Mar 05 Python
Python简单实现查找一个字符串中最长不重复子串的方法
Mar 26 Python
Python3 中把txt数据文件读入到矩阵中的方法
Apr 27 Python
python smtplib模块实现发送邮件带附件sendmail
May 22 Python
Python实现线性插值和三次样条插值的示例代码
Nov 13 Python
python 实现提取log文件中的关键句子,并进行统计分析
Dec 24 Python
通过实例解析python描述符原理作用
Jan 22 Python
Python版中国省市经纬度
Feb 11 Python
pycharm安装及如何导入numpy
Apr 03 Python
Python 执行矩阵与线性代数运算
Aug 01 Python
python中not、and和or的优先级与详细用法介绍
Nov 03 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 curl post 时出现的问题解决
2014/01/30 PHP
深入浅出php socket编程
2015/05/13 PHP
smarty中改进truncate使其支持中文的方法
2016/05/30 PHP
php版交通银行网银支付接口开发入门教程
2016/09/26 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
PHP开发实现快递查询功能详解
2019/04/08 PHP
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
2009/11/12 Javascript
30分钟就入门的正则表达式基础教程
2013/02/25 Javascript
jQuery:节点(插入,复制,替换,删除)操作
2013/03/04 Javascript
jQuery学习笔记之jQuery原型属性和方法
2014/06/09 Javascript
javascript实现下雨效果
2017/03/27 Javascript
JS获取浏览器地址栏的多个参数值的任意值实例代码
2018/07/24 Javascript
js实现详情页放大镜效果
2020/10/28 Javascript
微信小程序实现列表左右滑动
2020/11/19 Javascript
[03:21]辉夜杯主赛事 12月25日TOP5
2015/12/26 DOTA
[11:44]Ti9 OG夺冠时刻
2019/08/25 DOTA
python采用django框架实现支付宝即时到帐接口
2016/05/17 Python
Python爬虫代理IP池实现方法
2017/01/05 Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
2017/04/21 Python
Python实现网站表单提交和模板
2019/01/15 Python
Python Django框架防御CSRF攻击的方法分析
2019/10/18 Python
详解有关PyCharm安装库失败的问题的解决方法
2020/02/02 Python
Python3自定义json逐层解析器代码
2020/05/11 Python
Django的ListView超详细用法(含分页paginate)
2020/05/21 Python
Tensorflow之MNIST CNN实现并保存、加载模型
2020/06/17 Python
canvas之万花筒效果的简单实现(推荐)
2016/08/16 HTML / CSS
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
管事部库房保管员岗位职责
2014/02/21 职场文书
优秀员工推荐信
2014/05/10 职场文书
统计专业自荐书
2014/07/06 职场文书
求职自我评价范文100字
2014/09/23 职场文书
关于战胜挫折的名言警句大全!
2019/07/05 职场文书
演讲稿之感恩老师(三篇范文)
2019/09/06 职场文书
撤回我也能看到!教你用Python制作微信防撤回脚本
2021/06/11 Python
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏
python神经网络 使用Keras构建RNN训练
2022/05/04 Python