简单介绍使用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 文件操作技巧(File operation) 实例代码分析
Aug 11 Python
使用Python生成url短链接的方法
May 04 Python
python使用win32com库播放mp3文件的方法
May 30 Python
Python实现快速排序算法及去重的快速排序的简单示例
Jun 26 Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
Jun 27 Python
Python正则表达式非贪婪、多行匹配功能示例
Aug 08 Python
Python编写Windows Service服务程序
Jan 04 Python
Selenium定位元素操作示例
Aug 10 Python
Python 20行简单实现有道在线翻译的详解
May 15 Python
Python 中Django验证码功能的实现代码
Jun 20 Python
Python线上环境使用日志的及配置文件
Jul 28 Python
python实现批量修改文件名
Mar 23 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安全配置
2006/10/09 PHP
php.ini 中文版
2006/10/28 PHP
PHP中设置时区方法小结
2012/06/03 PHP
hadoop常见错误以及处理方法详解
2013/06/19 PHP
CSS和JS标签style属性对照表(方便js开发的朋友)
2010/11/11 Javascript
读jQuery之三(构建选择器)
2011/06/11 Javascript
javascript解决innerText浏览器兼容问题思路代码
2013/05/17 Javascript
jquery限定文本框只能输入数字即整数和小数
2013/11/29 Javascript
对JavaScript中this指针的新理解分享
2015/01/31 Javascript
JavaScript中字符串(string)转json的2种方法
2015/06/25 Javascript
javascript定义类和类的实现实例详解
2015/12/01 Javascript
谈谈AngularJs中的隐藏和显示
2015/12/09 Javascript
巧方法 JavaScript获取超链接的绝对URL地址
2016/06/14 Javascript
前端面试知识点锦集(JavaScript篇)
2016/12/28 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
2017/08/22 Javascript
vue中使用props传值的方法
2019/05/08 Javascript
vscode中eslint插件的配置(prettier配置无效)
2019/09/10 Javascript
Js和VUE实现跑马灯效果
2020/05/25 Javascript
jQuery实现穿梭框效果
2021/01/19 jQuery
python修改字典内key对应值的方法
2015/07/11 Python
Python爬虫框架scrapy实现的文件下载功能示例
2018/08/04 Python
django利用request id便于定位及给日志加上request_id
2018/08/26 Python
pycharm: 恢复(reset) 误删文件的方法
2018/10/22 Python
Python : turtle色彩控制实例详解
2020/01/19 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
2020/02/09 Python
10张动图学会python循环与递归问题
2021/02/06 Python
基于html5实现的图片墙效果
2014/10/16 HTML / CSS
Java中实现多态的机制
2015/08/09 面试题
医学生自荐信范文
2013/12/03 职场文书
服装设计师求职信
2014/06/04 职场文书
市场调查策划方案
2014/06/10 职场文书
人力资源管理毕业生自荐信
2014/06/26 职场文书
第二批党的群众路线教育实践活动总结报告
2014/10/30 职场文书
银行求职信范文怎么写
2015/03/20 职场文书
2015年网络舆情工作总结
2015/07/24 职场文书
“鬼灭之刃”热度不减,其成功背后的原因是什么?
2022/03/22 日漫