简单介绍使用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中自定义函数的教程
Apr 27 Python
python操作字典类型的常用方法(推荐)
May 16 Python
Python实现PS滤镜中马赛克效果示例
Jan 20 Python
安装python时MySQLdb报错的问题描述及解决方法
Mar 20 Python
基于python绘制科赫雪花
Jun 22 Python
Python 分享10个PyCharm技巧
Jul 13 Python
python中列表的切片与修改知识点总结
Jul 23 Python
django drf框架中的user验证以及JWT拓展的介绍
Aug 12 Python
Python @property装饰器原理解析
Jan 22 Python
python datetime时间格式的相互转换问题
Jun 11 Python
python 安装移动复制第三方库操作
Jul 13 Python
解决pytorch 损失函数中输入输出不匹配的问题
Jun 05 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
别人整理的服务器变量:$_SERVER
2006/10/20 PHP
解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
2013/07/03 PHP
destoon调用自定义模板及样式的公告栏
2014/06/21 PHP
Ajax,UTF-8还是GB2312 eval 还是execScript
2008/11/13 Javascript
Lazy Load 延迟加载图片的 jQuery 插件
2010/02/06 Javascript
有趣的JavaScript数组长度问题代码说明
2011/01/20 Javascript
JS下拉框内容左右移动效果的具体实现
2013/07/10 Javascript
js实现按Ctrl+Enter发送效果
2014/09/18 Javascript
自己动手手写jQuery插件总结
2015/01/20 Javascript
js根据鼠标移动速度背景图片自动旋转的方法
2015/02/28 Javascript
简述AngularJS相关的一些编程思想
2015/06/23 Javascript
js编写一个简单的产品放大效果代码
2016/06/27 Javascript
Node.js 日志处理模块log4js
2016/08/28 Javascript
JavaScript动态检验密码强度的实现方法
2016/11/09 Javascript
Node.js调试技术总结分享
2017/03/12 Javascript
javascript数组去重常用方法实例分析
2017/04/11 Javascript
jquery 禁止鼠标右键并监听右键事件
2017/04/27 jQuery
Express框架之connect-flash详解
2017/05/31 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
2019/04/04 Javascript
vue搜索页开发实例代码详解(热门搜索,历史搜索,淘宝接口演示)
2020/04/11 Javascript
详细分析vue表单数据的绑定
2020/07/20 Javascript
vue使用Sass时报错问题的解决方法
2020/10/14 Javascript
研究Python的ORM框架中的SQLAlchemy库的映射关系
2015/04/25 Python
详解Python中正则匹配TAB及空格的小技巧
2019/07/26 Python
pytorch forward两个参数实例
2020/01/17 Python
如何使用html5与css3完成google涂鸦动画
2012/12/16 HTML / CSS
Melijoe时尚童装德国官网:Melijoe德国
2016/09/03 全球购物
一年级班主任寄语
2014/01/19 职场文书
小学生读书活动总结
2014/06/30 职场文书
超市促销活动总结
2014/07/01 职场文书
缓刑人员思想汇报500字
2014/09/12 职场文书
广告设计专业毕业生自我鉴定
2014/09/27 职场文书
反腐倡廉学习心得体会范文
2015/08/15 职场文书
房产销售员2015年终工作总结
2015/10/22 职场文书
致毕业季:你如何做好自己的职业生涯规划书?
2019/07/01 职场文书
创业项目大全(适合在家创业的项目)
2019/08/15 职场文书