简单介绍使用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 collections模块实例讲解
Apr 07 Python
利用python代码写的12306订票代码
Dec 20 Python
深入浅析Python中join 和 split详解(推荐)
Jun 30 Python
Python实现中一次读取多个值的方法
Apr 22 Python
Sanic框架路由用法实例分析
Jul 16 Python
Python requests库用法实例详解
Aug 14 Python
不管你的Python报什么错,用这个模块就能正常运行
Sep 14 Python
python获取交互式ssh shell的方法
Feb 14 Python
利用ImageAI库只需几行python代码实现目标检测
Aug 09 Python
Python (Win)readline和tab补全的安装方法
Aug 27 Python
Python连接SQLite数据库并进行增册改查操作方法详解
Feb 18 Python
利用python进行数据加载
Jun 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 session会话的安全性分析
2011/09/08 PHP
php源代码安装常见错误与解决办法分享
2013/05/28 PHP
PHP中使用FFMPEG获取视频缩略图和视频总时长实例
2014/05/04 PHP
PHP的消息通信机制测试实例
2016/11/10 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
详解PHP防止直接访问.php 文件的实现方法
2017/07/28 PHP
php实现微信分享朋友链接功能
2019/02/18 PHP
Laravel核心解读之异常处理的实践过程
2019/02/24 PHP
php+ajax实现商品对比功能示例
2019/04/13 PHP
JavaScript的document对象和window对象详解
2010/12/30 Javascript
jQuery实现的多选框多级联动插件
2014/05/02 Javascript
基于jQuery日历插件制作日历
2016/03/11 Javascript
改变checkbox默认选中状态及取值的实现代码
2016/05/26 Javascript
Bootstrap页面布局基础知识全面解析
2016/06/13 Javascript
Jquery通过ajax请求NodeJS返回json数据实例
2016/11/08 NodeJs
AngularJS中directive指令使用之事件绑定与指令交互用法示例
2016/11/22 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
基于JS实现限时抢购倒计时间表代码
2017/05/09 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
2017/09/19 Javascript
element-ui 表格实现单元格可编辑的示例
2018/02/26 Javascript
Vue中的循环及修改差值表达式的方法
2019/08/29 Javascript
js实现百度登录窗口拖拽效果
2020/03/19 Javascript
vue实现从外部修改组件内部的变量的值
2020/07/30 Javascript
用python实现的可以拷贝或剪切一个文件列表中的所有文件
2009/04/30 Python
用python + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
2014/07/14 Python
Python基于scrapy采集数据时使用代理服务器的方法
2015/04/16 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
2021/01/05 Python
利用CSS3的flexbox实现水平垂直居中与三列等高布局
2016/09/12 HTML / CSS
css3实例教程 一款纯css3实现的发光屏幕旋转特效
2014/12/07 HTML / CSS
食品厂厂长岗位职责
2014/01/30 职场文书
学习十八大报告感言
2014/02/28 职场文书
2014年党支部学习材料
2014/05/19 职场文书
党建目标管理责任书
2014/07/25 职场文书
公司租房协议书
2014/10/14 职场文书
试用期自我评价范文
2015/03/10 职场文书
2016学校元旦晚会经典开场白台词
2015/12/03 职场文书