简单介绍使用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调用C/C++动态链接库的方法详解
Jul 22 Python
Python从使用线程到使用async/await的深入讲解
Sep 16 Python
使用Python批量修改文件名的代码实例
Jan 24 Python
python实现微信自动回复机器人功能
Jul 11 Python
50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)
Nov 20 Python
关于numpy.where()函数 返回值的解释
Dec 06 Python
Anconda环境下Vscode安装Python的方法详解
Mar 29 Python
Python如何向SQLServer存储二进制图片
Jun 08 Python
Python ConfigParser模块的使用示例
Oct 12 Python
python - asyncio异步编程
Apr 06 Python
python 管理系统实现mysql交互的示例代码
Dec 06 Python
python数字类型和占位符详情
Mar 13 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多态代码实例
2015/06/26 PHP
JavaScript 仿关机效果的图片层
2008/12/26 Javascript
js 函数的副作用分析
2011/08/23 Javascript
让你一句话理解闭包(简单易懂)
2016/06/03 Javascript
BootStrap入门教程(三)之响应式原理
2016/09/19 Javascript
Jquery循环截取字符串的方法(多出的字符串处理成&quot;...&quot;)
2016/11/28 Javascript
深入理解javascript中concat方法
2016/12/12 Javascript
js中setTimeout的妙用--防止循环超时
2017/03/06 Javascript
vue2 自定义动态组件所遇到的问题
2017/06/08 Javascript
基于js文件加载优化(详解)
2018/01/03 Javascript
npm 下载指定版本的组件方法
2018/05/17 Javascript
Vue表单及表单绑定方法
2018/09/04 Javascript
vue.js单文件组件中非父子组件的传值实例
2018/09/13 Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
2018/09/19 Javascript
JS基于Location实现访问Url、重定向及刷新页面的方法分析
2018/12/03 Javascript
利用Fn.py库在Python中进行函数式编程
2015/04/22 Python
sublime python3 输入换行不结束的方法
2018/04/19 Python
selenium python 实现基本自动化测试的示例代码
2019/02/25 Python
Python中super函数用法实例分析
2019/03/18 Python
python MultipartEncoder传输zip文件实例
2020/04/07 Python
python把一个字符串切开的实例方法
2020/09/27 Python
Python命令行参数argv和argparse该如何使用
2021/02/08 Python
使用CSS3的font-face字体嵌入样式的方法讲解
2016/05/13 HTML / CSS
德国最大的服装、鞋子和配件在线商店之一:Outfits24
2019/07/23 全球购物
C#里面如何判断一个Object是否是某种类型(如Boolean)?
2016/02/10 面试题
类的返射机制中的包及核心类
2016/09/12 面试题
2014学习全国两会精神心得体会2000字
2014/03/11 职场文书
开工仪式主持词
2014/03/20 职场文书
搞笑车尾标语
2014/06/23 职场文书
2014年人大工作总结
2014/12/10 职场文书
居安思危观后感
2015/06/11 职场文书
庆祝教师节主持词
2015/07/06 职场文书
工作转正自我鉴定范文
2019/06/21 职场文书
CSS3实现的水平标题菜单
2021/04/14 HTML / CSS
发工资啦!教你用Python实现邮箱自动群发工资条
2021/05/10 Python