利用 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 相关文章推荐
用map函数来完成Python并行任务的简单示例
Apr 02 Python
Python实现二分查找算法实例
May 26 Python
Python3中的2to3转换工具使用示例
Jun 12 Python
Python数据操作方法封装类实例
Jun 23 Python
python多线程共享变量的使用和效率方法
Jul 16 Python
python编写猜数字小游戏
Oct 06 Python
Series和DataFrame使用简单入门
Nov 13 Python
opencv3/C++实现视频背景去除建模(BSM)
Dec 11 Python
Python爬虫爬取博客实现可视化过程解析
Jun 29 Python
python写文件时覆盖原来的实例方法
Jul 22 Python
python处理写入数据代码讲解
Oct 22 Python
python 学习GCN图卷积神经网络
May 11 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新手上路(二)
2006/10/09 PHP
php出现Cannot modify header information问题的解决方法大全
2008/04/09 PHP
PHP执行zip与rar解压缩方法实现代码
2010/12/05 PHP
PHP读取文件内容的五种方式
2015/12/28 PHP
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
2016/04/22 PHP
模拟用户操作Input元素,不会触发相应事件
2007/05/11 Javascript
设置下载不需要倒计时cookie(倒计时代码)
2008/11/19 Javascript
基于jQuery的动态增删改查表格信息,可左键/右键提示(原创自Zjmainstay)
2012/07/31 Javascript
Javascript中 关于prototype属性实现继承的原理图
2013/04/16 Javascript
Jquery遍历节点的方法小集
2014/01/22 Javascript
JS调用页面表格导出excel示例代码
2014/03/18 Javascript
jQuery插件uploadify实现ajax效果的图片上传
2016/06/18 Javascript
jQuery获取radio选中项的值实例
2016/06/18 Javascript
JS实现淡入淡出图片效果的方法分析
2016/12/20 Javascript
JavaScript解析任意形式的json树型结构展示
2017/07/23 Javascript
VUE中的无限循环代码解析
2017/09/22 Javascript
bootstrap 路径导航 分页 进度条的实例代码
2018/08/06 Javascript
vue 监听某个div垂直滚动条下拉到底部的方法
2018/09/15 Javascript
对angularJs中2种自定义服务的实例讲解
2018/09/30 Javascript
vue配置文件实现代理v2版本的方法
2019/06/21 Javascript
vue本地打开build后生成的dist文件夹index.html问题
2019/09/04 Javascript
javascript实现点亮灯泡特效示例
2019/10/15 Javascript
JS实现电脑虚拟键盘打字测试
2020/06/24 Javascript
[01:12]DOTA2 2015年秋季互动指南
2015/11/10 DOTA
Python的Urllib库的基本使用教程
2015/04/30 Python
VSCode下好用的Python插件及配置
2018/04/06 Python
Python面向对象类的继承实例详解
2018/06/27 Python
python+requests接口自动化框架的实现
2020/08/31 Python
最新奶茶店创业计划书
2014/01/25 职场文书
商铺租赁意向书
2014/04/01 职场文书
协议书格式
2014/04/23 职场文书
竞选劳动委员演讲稿
2014/04/28 职场文书
公司的门卫岗位职责
2014/09/09 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书
JavaScript分页组件使用方法详解
2021/07/26 Javascript
A22国内电台短波广播频率表
2022/05/10 无线电