简单介绍使用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正则表达式抓取成语网站
Nov 20 Python
给Python中的MySQLdb模块添加超时功能的教程
May 05 Python
python字典键值对的添加和遍历方法
Sep 11 Python
Python 多线程实例详解
Mar 25 Python
TensorFlow实现iris数据集线性回归
Sep 07 Python
Python3转换html到pdf的不同解决方案
Mar 11 Python
Python中捕获键盘的方式详解
Mar 28 Python
pytorch的batch normalize使用详解
Jan 15 Python
python实现的分层随机抽样案例
Feb 25 Python
python爬虫开发之Request模块从安装到详细使用方法与实例全解
Mar 09 Python
Django nginx配置实现过程详解
Sep 10 Python
tensorflow2.0教程之Keras快速入门
Feb 20 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
服务器web工具 php环境下
2010/12/29 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
2013/10/22 PHP
php实现的支持断点续传的文件下载类
2014/09/23 PHP
php读取本地json文件的实例
2018/03/07 PHP
firefox插件Firebug的使用教程
2010/01/02 Javascript
JavaScript 空位补零实现代码
2010/02/26 Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
2016/05/25 Javascript
Bootstrap Table使用方法解析
2016/10/19 Javascript
5种JavaScript脚本加载的方式
2017/01/16 Javascript
Vue2.0如何发布项目实战
2017/07/27 Javascript
react配置antd按需加载的使用
2019/02/11 Javascript
一文快速了解JQuery中的AJAX
2019/05/31 jQuery
javascript实现放大镜功能
2020/12/09 Javascript
python实现博客文章爬虫示例
2014/02/26 Python
python中实现定制类的特殊方法总结
2014/09/28 Python
利用Python实现Windows定时关机功能
2017/03/21 Python
python对配置文件.ini进行增删改查操作的方法示例
2017/07/28 Python
python list元素为tuple时的排序方法
2018/04/18 Python
对python中数据集划分函数StratifiedShuffleSplit的使用详解
2018/12/11 Python
Python 多个图同时在不同窗口显示的实现方法
2019/07/07 Python
HTML5 新旧语法标记对我们有什么好处
2012/12/13 HTML / CSS
Canvas获取视频第一帧缩略图的实现
2020/11/11 HTML / CSS
MAC彩妆英国官网:M·A·C UK
2018/05/30 全球购物
美国正宗设计师眼镜在线零售商:EYEZZ
2019/03/23 全球购物
加拿大鞋网:Globo Shoes
2019/12/26 全球购物
前台接待岗位职责
2013/12/03 职场文书
上级检查欢迎词
2014/01/18 职场文书
新闻学专业大学生职业生涯规划范文
2014/03/02 职场文书
会计学毕业生求职信
2014/06/25 职场文书
党的群众路线教育实践活动个人整改措施
2014/10/27 职场文书
2014年环卫工作总结
2014/11/22 职场文书
创先争优活动个人总结
2015/03/04 职场文书
《乌鸦喝水》教学反思
2016/02/19 职场文书
详解Redis瘦身指南
2021/05/26 Redis
PostgreSQL常用字符串分割函数整理汇总
2022/07/07 PostgreSQL