利用 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中执行shell命令的几个方法小结
Sep 18 Python
基础的十进制按位运算总结与在Python中的计算示例
Jun 28 Python
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
Apr 18 Python
解决nohup执行python程序log文件写入不及时的问题
Jan 14 Python
python执行精确的小数计算方法
Jan 21 Python
Python实现爬取马云的微博功能示例
Feb 16 Python
Django 源码WSGI剖析过程详解
Aug 05 Python
python实现简单学生信息管理系统
Apr 09 Python
Python虚拟环境的创建和包下载过程分析
Jun 19 Python
详解Selenium-webdriver绕开反爬虫机制的4种方法
Oct 28 Python
使用Python拟合函数曲线
Apr 14 Python
Python实现Matplotlib,Seaborn动态数据图
May 06 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上传apk后自动提取apk包信息的使用(示例下载)
2013/04/26 PHP
javascript jQuery插件练习
2008/12/24 Javascript
Extjs学习笔记之七 布局
2010/01/08 Javascript
kindeditor编辑器点中图片滚动条往上顶的bug
2015/07/05 Javascript
javascript实现继承的简单实例
2015/07/26 Javascript
最丑的时钟效果!js canvas时钟制作方法
2016/08/15 Javascript
jQuery查找节点方法完整实例
2016/09/13 Javascript
利用Node.JS实现邮件发送功能
2016/10/21 Javascript
jQuery插件WebUploader实现文件上传
2016/11/07 Javascript
jQuery EasyUI ProgressBar进度条组件
2017/02/28 Javascript
使用vue.js写一个tab选项卡效果
2017/03/25 Javascript
addEventListener()与removeEventListener()解析
2017/04/20 Javascript
vue导出html、word和pdf的实现代码
2018/07/31 Javascript
在vue中多次调用同一个定义全局变量的实例
2018/09/25 Javascript
vue中的router-view组件的使用教程
2018/10/23 Javascript
js使用文件流下载csv文件的实现方法
2019/07/15 Javascript
Node.js系列之安装配置与基本使用(1)
2019/08/30 Javascript
浅谈Vue.js之初始化el以及数据的绑定说明
2019/11/14 Javascript
JavaScript写个贪吃蛇小游戏(超详细)
2020/03/17 Javascript
[46:59]完美世界DOTA2联赛PWL S2 GXR vs Ink 第二场 11.19
2020/11/20 DOTA
python进阶教程之循环对象
2014/08/30 Python
Python设计模式之抽象工厂模式
2016/08/25 Python
python 实现登录网页的操作方法
2018/05/11 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
2018/07/16 Python
Python中print和return的作用及区别解析
2019/05/05 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
2020/12/07 Python
荷兰超市:DEEN
2018/03/14 全球购物
Skyscanner香港:机票比价, 平机票和廉价航空机票预订
2020/02/07 全球购物
什么是.net的Remoting技术
2016/07/08 面试题
中学生学雷锋活动心得体会
2014/03/10 职场文书
岗位廉洁从业承诺书
2014/03/28 职场文书
副处级干部考察材料
2014/05/17 职场文书
大学同学会活动方案
2014/08/20 职场文书
趣味运动会简讯
2015/07/20 职场文书
2016年春季运动会通讯稿
2015/11/25 职场文书