简单介绍使用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 相关文章推荐
如何搜索查找并解决Django相关的问题
Jun 30 Python
Python访问MySQL封装的常用类实例
Nov 11 Python
在SAE上部署Python的Django框架的一些问题汇总
May 30 Python
python比较两个列表是否相等的方法
Jul 28 Python
python使用fcntl模块实现程序加锁功能示例
Jun 23 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
Feb 22 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
Jun 05 Python
python常用数据重复项处理方法
Nov 22 Python
python计算无向图节点度的实例代码
Nov 22 Python
python系统指定文件的查找只输出目录下所有文件及文件夹
Jan 19 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
May 20 Python
详解python的变量缓存机制
Jan 24 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中strtr与str_replace函数运行性能简单测试示例
2019/06/22 PHP
JavaScript Base64编码和解码,实现URL参数传递。
2006/09/18 Javascript
jQuery的一些注意
2006/12/06 Javascript
javascript 命名规则 变量命名规则
2010/02/25 Javascript
javascript中的数字与字符串相加实例分析
2011/08/14 Javascript
精心挑选的15款优秀jQuery 本特效插件和教程
2012/08/06 Javascript
JavaScript中Date对象的常用方法示例
2015/10/24 Javascript
jQuery UI Bootstrap是什么?
2016/06/17 Javascript
jQuery组件easyui对话框实现代码
2016/08/25 Javascript
jQuery事件与动画基础详解
2017/02/23 Javascript
jQuery实现获取table中鼠标click点击位置行号与列号的方法
2017/10/09 jQuery
vue双花括号的使用方法 附练习题
2017/11/07 Javascript
浅析JS抽象工厂模式
2017/12/14 Javascript
webpack4.x开发环境配置详解
2018/08/04 Javascript
原生js添加一个或多个类名的方法分析
2019/07/30 Javascript
Vue实现点击显示不同图片的效果
2019/08/10 Javascript
vue+ESLint 配置保存 自动格式化代码
2020/03/17 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
2020/03/31 Javascript
基于JavaScript实现控制下拉列表
2020/05/08 Javascript
js实现表格数据搜索
2020/08/09 Javascript
一篇文章看懂JavaScript中的回调
2021/01/05 Javascript
python采集博客中上传的QQ截图文件
2014/07/18 Python
Python实现的十进制小数与二进制小数相互转换功能
2017/10/12 Python
基于Python实现的ID3决策树功能示例
2018/01/02 Python
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
2018/04/26 Python
对python3中pathlib库的Path类的使用详解
2018/10/14 Python
深度辨析Python的eval()与exec()的方法
2019/03/26 Python
python 利用jinja2模板生成html代码实例
2019/10/10 Python
李维斯牛仔裤英国官方网站:Levi’s英国
2019/10/10 全球购物
医科大学生毕业的自我评价分享
2013/11/12 职场文书
十岁生日家长答谢词
2014/01/17 职场文书
2014年煤矿工人工作总结
2014/12/08 职场文书
导游词开场白
2015/01/31 职场文书
整改通知书
2015/04/20 职场文书
2015年大学迎新工作总结
2015/07/16 职场文书
小组口号霸气押韵
2015/12/24 职场文书