简单介绍使用Python解析并修改XML文档的方法


Posted in Python onOctober 15, 2015

问题
你想读取一个XML文档,对它最一些修改,然后将结果写回XML文档。


解决方案

使用 xml.etree.ElementTree 模块可以很容易的处理这些任务。 第一步是以通常的方式来解析这个文档。例如,假设你有一个名为 pred.xml 的文档,类似下面这样:

下面是一个利用 ElementTree 来读取这个文档并对它做一些修改的例子:

>>> from xml.etree.ElementTree import parse, Element
>>> doc = parse('pred.xml')
>>> root = doc.getroot()
>>> root
<Element 'stop' at 0x100770cb0>

>>> # Remove a few elements
>>> root.remove(root.find('sri'))
>>> root.remove(root.find('cr'))
>>> # Insert a new element after <nm>...</nm>
>>> root.getchildren().index(root.find('nm'))
1
>>> e = Element('spam')
>>> e.text = 'This is a test'
>>> root.insert(2, e)

>>> # Write back to a file
>>> doc.write('newpred.xml', xml_declaration=True)
>>>

处理结果是一个像下面这样新的XML文件:

讨论
修改一个XML文档结构是很容易的,但是你必须牢记的是所有的修改都是针对父节点元素, 将它作为一个列表来处理。例如,如果你删除某个元素,通过调用父节点的 remove() 方法从它的直接父节点中删除。 如果你插入或增加新的元素,你同样使用父节点元素的 insert() 和 append() 方法。 还能对元素使用索引和切片操作,比如 element[i] 或 element[i:j]

如果你需要创建新的元素,可以使用本节方案中演示的 Element 类。我们在6.5小节已经详细讨论过了。

Python 相关文章推荐
Python中使用第三方库xlutils来追加写入Excel文件示例
Apr 05 Python
Python文件操作基本流程代码实例
Dec 11 Python
Python+Turtle动态绘制一棵树实例分享
Jan 16 Python
TensorFlow实现简单卷积神经网络
May 24 Python
pandas带有重复索引操作方法
Jun 08 Python
Python3实现腾讯云OCR识别
Nov 27 Python
对python模块中多个类的用法详解
Jan 10 Python
Django模板Templates使用方法详解
Jul 19 Python
基于Tensorflow:CPU性能分析
Feb 10 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
Feb 27 Python
Python多线程:主线程等待所有子线程结束代码
Apr 25 Python
python函数中将变量名转换成字符串实例
May 11 Python
Python中将字典转换为XML以及相关的命名空间解析
Oct 15 #Python
详细解读Python中解析XML数据的方法
Oct 15 #Python
深入解析Python编程中JSON模块的使用
Oct 15 #Python
使用Python解析JSON数据的基本方法
Oct 15 #Python
深入讲解Python编程中的字符串
Oct 14 #Python
Python编程中字符串和列表的基本知识讲解
Oct 14 #Python
Python循环语句之break与continue的用法
Oct 14 #Python
You might like
php替换超长文本中的特殊字符的函数代码
2012/05/22 PHP
Window下PHP三种运行方式图文详解
2013/06/11 PHP
php获得url参数中具有&amp;的值的方法
2014/03/05 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
2018/06/05 PHP
javascript数组的扩展实现代码集合
2008/06/01 Javascript
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
node.js中的console.time方法使用说明
2014/12/09 Javascript
jQuery实现拖动调整表格单元格大小的代码实例
2015/01/13 Javascript
理解javascript中的with关键字
2016/02/15 Javascript
微信页面倒计时代码(解决safari不兼容date的问题)
2016/12/13 Javascript
bootstrap多种样式进度条展示
2016/12/20 Javascript
微信小程序网络请求的封装与填坑之路
2017/04/01 Javascript
bootstrap日期控件问题(双日期、清空等问题解决)
2017/04/19 Javascript
深入理解Vue2.x的虚拟DOM diff原理
2017/09/27 Javascript
jquery自定义显示消息数量
2017/12/19 jQuery
浅谈vue中关于checkbox数据绑定v-model指令的个人理解
2018/11/14 Javascript
js获取对象,数组所有属性键值(key)和对应值(value)的方法示例
2019/06/19 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
2019/09/03 Javascript
使用Promise封装小程序wx.request的实现方法
2019/11/13 Javascript
VUE 实现element upload上传图片到阿里云
2020/08/12 Javascript
[39:32]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第二场
2014/05/23 DOTA
[01:20:06]TNC vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python 异常处理的实例详解
2017/09/11 Python
flask框架单元测试原理与用法实例分析
2019/07/23 Python
使用python接受tgam的脑波数据实例
2020/04/09 Python
Python threading模块condition原理及运行流程详解
2020/10/05 Python
最新远光软件笔试题面试题内容
2013/11/08 面试题
简历中的自我评价怎么写
2014/01/29 职场文书
大学教师师德师风演讲稿
2014/08/22 职场文书
假释思想汇报范文
2014/10/11 职场文书
2014年健康教育工作总结
2014/11/20 职场文书
英语通知范文
2015/04/22 职场文书
大学生就业意向书
2015/05/11 职场文书
婚宴致辞
2015/07/28 职场文书
python 中的@运算符使用
2021/05/26 Python
MySQL中EXPLAIN语句及用法
2022/05/20 MySQL