简单介绍使用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网络编程学习笔记(三):socket网络服务器
Jun 09 Python
Python字符串处理实例详解
May 18 Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
Jul 17 Python
selenium+PhantomJS爬取豆瓣读书
Aug 26 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
Sep 16 Python
Python 脚本拉取 Docker 镜像问题
Nov 10 Python
Numpy与Pytorch 矩阵操作方式
Dec 27 Python
Pycharm插件(Grep Console)自定义规则输出颜色日志的方法
May 27 Python
如何在Windows中安装多个python解释器
Jun 16 Python
Python使用Selenium模拟浏览器自动操作功能
Sep 08 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
Nov 25 Python
python字符串的多行输出的实例详解
Jun 08 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
全国FM电台频率大全 - 20 广西省
2020/03/11 无线电
PHP脚本的10个技巧(6)
2006/10/09 PHP
PHP高手需要要掌握的知识点
2014/08/21 PHP
PHP+Session防止表单重复提交的解决方法
2018/04/09 PHP
jquery ready函数源代码研究
2009/12/06 Javascript
jquery分页插件AmSetPager(自写)
2013/04/15 Javascript
jQuery获取DOM节点实例分析(2种方式)
2015/12/15 Javascript
json的使用小结
2016/06/08 Javascript
微信小程序 video组件详解
2016/10/25 Javascript
html判断当前页面是否在iframe中的实例
2016/11/30 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
2017/01/12 Javascript
JavaScript实现瀑布流以及加载效果
2017/02/11 Javascript
Node.js使用gm拼装sprite图片
2017/07/04 Javascript
浅谈vue-router2路由参数注意的问题
2017/11/08 Javascript
Bootstrap 模态框多次显示后台提交多次BUG的解决方法
2017/12/26 Javascript
VUE 使用中踩过的坑
2018/02/08 Javascript
webpack本地开发环境无法用IP访问的解决方法
2018/03/20 Javascript
Vue.js 实现微信公众号菜单编辑器功能(二)
2018/05/08 Javascript
vue-cli构建项目下使用微信分享功能
2018/05/28 Javascript
详解vue-cli3使用
2018/08/14 Javascript
Vue搭建后台系统需要注意的问题
2019/11/08 Javascript
Python交换变量
2008/09/06 Python
Python的Django框架中的select_related函数对QuerySet 查询的优化
2015/04/01 Python
python函数局部变量用法实例分析
2015/08/04 Python
Pycharm配置远程调试的方法步骤
2018/12/17 Python
python正则表达式匹配[]中间为任意字符的实例
2018/12/25 Python
Python中Flask-RESTful编写API接口(小白入门)
2019/12/11 Python
Windows下python3安装tkinter的问题及解决方法
2020/01/06 Python
关于tf.TFRecordReader()函数的用法解析
2020/02/17 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
2020/06/28 Python
中国京东和泰国中央集团合资的网站:JD CENTRAL
2020/08/22 全球购物
护士的岗位职责
2013/12/04 职场文书
教师教育心得体会
2016/01/19 职场文书
交通事故协议书范本
2016/03/19 职场文书
vue css 相对路径导入问题级踩坑记录
2022/06/05 Vue.js
vue实现简易音乐播放器
2022/08/14 Vue.js