利用 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 bsddb模块操作Berkeley DB数据库介绍
Apr 08 Python
使用70行Python代码实现一个递归下降解析器的教程
Apr 17 Python
使用Python脚本将文字转换为图片的实例分享
Aug 29 Python
Python中的异常处理相关语句基础学习笔记
Jul 11 Python
python 类详解及简单实例
Mar 24 Python
python写入已存在的excel数据实例
May 03 Python
Flask Web开发入门之文件上传(八)
Aug 17 Python
python字典一键多值实例代码分享
Jun 14 Python
python如何使用jt400.jar包代码实例
Dec 20 Python
如何基于python实现脚本加密
Dec 28 Python
Python 如何展开嵌套的序列
Aug 01 Python
python自动提取文本中的时间(包含中文日期)
Aug 31 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
什么是MVC,好东西啊
2007/05/03 PHP
php面向对象全攻略 (四)构造方法与析构方法
2009/09/30 PHP
php中常用字符串处理代码片段整理
2011/11/07 PHP
php简单浏览目录内容的实现代码
2013/06/07 PHP
php操作memcache缓存方法分享
2015/06/03 PHP
php算法实例分享
2015/07/14 PHP
javascript学习笔记(五)正则表达式
2011/04/08 Javascript
使用jquery组件qrcode生成二维码及应用指南
2015/02/22 Javascript
详解AngularJS中的表格使用
2015/06/16 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
ES6的新特性概览
2016/03/10 Javascript
JavaScript实现倒计时跳转页面功能【实用】
2016/12/13 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
2020/05/30 Javascript
微信小程序实现锚点定位楼层跳跃的实例
2017/05/18 Javascript
angularjs下拉框空白的解决办法
2017/06/20 Javascript
vue mint-ui学习笔记之picker的使用
2017/10/11 Javascript
Vue Router去掉url中默认的锚点#
2018/08/01 Javascript
Vue中多个元素、组件的过渡及列表过渡的方法示例
2019/02/13 Javascript
使用异步组件优化Vue应用程序的性能
2019/04/28 Javascript
Javascript实现html转pdf高清版(提高分辨率)
2020/02/19 Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
2020/11/11 Javascript
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
详解Python命令行解析工具Argparse
2016/04/20 Python
Python基于Hypothesis测试库生成测试数据
2020/04/29 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
2020/09/28 Python
CSS3 Columns分列式布局方法简介
2014/05/03 HTML / CSS
html5的canvas元素使用方法介绍(画矩形、画折线、圆形)
2014/04/14 HTML / CSS
全球摩托车装备领导者:RevZilla
2017/09/04 全球购物
情人节寄语大全
2014/04/11 职场文书
有关九一八事变的演讲稿
2014/09/14 职场文书
四风问题自我剖析材料
2014/10/07 职场文书
运动会广播稿200字
2014/10/18 职场文书
公司出纳岗位职责
2015/03/31 职场文书
孝女彩金观后感
2015/06/10 职场文书
欢送会主持词
2015/07/01 职场文书
铁头也玩根德 YachtBoy YB-230......
2022/04/05 无线电