简单介绍使用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之编写简单简单连接数据库并执行查询操作
Feb 27 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
Jan 20 Python
python3+dlib实现人脸识别和情绪分析
Apr 21 Python
pandas 将索引值相加的方法
Nov 15 Python
Python随机生成身份证号码及校验功能
Dec 04 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
Apr 15 Python
Python爬虫学习之翻译小程序
Jul 30 Python
python 操作hive pyhs2方式
Dec 21 Python
python分别打包出32位和64位应用程序
Feb 18 Python
Python Tkinter Entry和Text的添加与使用详解
Mar 04 Python
python Polars库的使用简介
Apr 21 Python
如何利用Python实现一个论文降重工具
Jul 09 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
建立动态的WML站点(三)
2006/10/09 PHP
浅析php中抽象类和接口的概念以及区别
2013/06/27 PHP
php中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
在 Laravel 中 “规范” 的开发短信验证码发送功能
2017/10/26 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
基于jquery实现控制经纬度显示地图与卫星
2013/05/20 Javascript
jQuery中mouseover事件用法实例
2014/12/26 Javascript
JavaScript原生对象之Number对象的属性和方法详解
2015/03/13 Javascript
javascript原始值和对象引用实例分析
2015/04/25 Javascript
javascript比较两个日期相差天数的方法
2015/07/23 Javascript
使用jquery实现鼠标滑过弹出更多相关信息层附源码下载
2015/11/23 Javascript
谈谈AngularJs中的隐藏和显示
2015/12/09 Javascript
微信小程序 location API实例详解
2016/10/02 Javascript
vue系列之动态路由详解【原创】
2017/09/10 Javascript
基于substring()和substr()的使用以及区别(实例讲解)
2017/12/28 Javascript
在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法
2018/10/25 Javascript
微信小程序中使用 async/await的方法实例分析
2020/05/06 Javascript
Python中zfill()方法的使用教程
2015/05/20 Python
Python的Socket编程过程中实现UDP端口复用的实例分享
2016/03/19 Python
Python 基础之字符串string详解及实例
2017/04/01 Python
python 弹窗提示警告框MessageBox的实例
2019/06/18 Python
Python3中urlencode和urldecode的用法详解
2019/07/23 Python
深入了解python中元类的相关知识
2019/08/29 Python
python库matplotlib绘制坐标图
2019/10/18 Python
pytorch之inception_v3的实现案例
2020/01/06 Python
django form和field具体方法和属性说明
2020/07/09 Python
python中Mako库实例用法
2020/12/31 Python
采购部主管岗位职责
2014/01/01 职场文书
求职信范文英文版
2014/01/05 职场文书
后备干部培训方案
2014/05/22 职场文书
技校毕业生自荐信
2014/06/03 职场文书
工厂清洁工岗位职责
2015/02/14 职场文书
2015年大学社团工作总结
2015/04/09 职场文书
2017年寒假社区服务活动总结
2016/04/06 职场文书
Laravel中获取IP的真实地理位置
2021/04/01 PHP
java基础——多线程
2021/07/03 Java/Android