简单介绍使用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的Django框架中的数据库配置指南
Jul 17 Python
两个命令把 Vim 打造成 Python IDE的方法
Mar 20 Python
python2.7 mayavi 安装图文教程(推荐)
Jun 22 Python
python opencv3实现人脸识别(windows)
May 25 Python
pip install urllib2不能安装的解决方法
Jun 12 Python
让代码变得更易维护的7个Python库
Oct 09 Python
从0开始的Python学习016异常
Apr 08 Python
Django如何将URL映射到视图
Jul 29 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
Aug 02 Python
与Django结合利用模型对上传图片预测的实例详解
Aug 07 Python
python实现贪吃蛇双人大战
Apr 18 Python
Python通过getattr函数获取对象的属性值
Oct 16 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
对squid中refresh_pattern的一些理解和建议
2009/04/17 PHP
php.ini-dist 和 php.ini-recommended 的区别介绍(方便开发与安全的朋友)
2012/07/01 PHP
PHP 使用pcntl和libevent 实现Timer功能
2013/10/27 PHP
PHP多维数组遍历方法(2种实现方法)
2015/12/10 PHP
php之可变变量的实例详解
2017/09/12 PHP
用javascript实现自定义标签
2007/05/08 Javascript
JavaScript Math.round() 方法
2015/12/18 Javascript
jQuery Dialog对话框事件用法实例分析
2016/05/10 Javascript
基于BootStrap Metronic开发框架经验小结【五】Bootstrap File Input文件上传插件的用法详解
2016/05/12 Javascript
JavaScript中闭包的写法和作用详解
2016/06/29 Javascript
jQuery中slidedown与slideup方法用法示例
2016/09/16 Javascript
vue.js实现表格合并示例代码
2016/11/30 Javascript
Bootstrap CSS组件之按钮下拉菜单
2016/12/17 Javascript
JavaScript实现垂直滚动条效果
2017/01/18 Javascript
react.js CMS 删除功能的实现方法
2017/04/17 Javascript
Node.js引入UIBootstrap的方法示例
2018/05/11 Javascript
在vue中给列表中的奇数行添加class的实现方法
2018/09/05 Javascript
vue页面切换项目实现转场动画的方法
2019/11/12 Javascript
Python运行的17个时新手常见错误小结
2012/08/07 Python
Python httplib模块使用实例
2015/04/11 Python
Python中执行存储过程及获取存储过程返回值的方法
2017/10/07 Python
python Pygame的具体使用讲解
2017/11/03 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
2017/12/21 Python
对python:print打印时加u的含义详解
2018/12/15 Python
python生成器用法实例详解
2019/11/22 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
2020/07/07 Python
python绘制趋势图的示例
2020/09/17 Python
屈臣氏越南官网:Watsons越南
2021/01/14 全球购物
酒店服务与管理毕业生求职信
2013/11/02 职场文书
统计学专业毕业生的自我评价分享
2013/11/28 职场文书
乒乓球兴趣小组活动总结
2014/07/08 职场文书
总经理助理岗位职责范本
2014/07/20 职场文书
美国旅游签证工作证明
2014/10/14 职场文书
任命书标准格式
2015/03/02 职场文书
2016年暑期教师培训心得体会
2016/01/09 职场文书
JDK8中String的intern()方法实例详细解读
2022/09/23 Java/Android