python通过ElementTree操作XML获取结点读取属性美化XML


Posted in Python onDecember 02, 2013

1.引入库
需要用到3个类,ElementTree,Element以及建立子类的包装类SubElement
from xml.etree.ElementTree import ElementTree
from xml.etree.ElementTree import Element
from xml.etree.ElementTree import SubElement as SE

2.读入并解析
tree = ElementTree(file=xmlfile)
root = tree.getroot()
读入后,tree是ElementTree的类型,获取xml根结点使用getroot()方法;

XML示例文件:

<item sid='1712' name = '大CC'  >
<a id=1></a>
<a id=2></a>
</item>

3.获取儿子结点
查找Element的所有子结点:

AArry = item.findall('a')
也可使用getchildren():
childs =  item.getchildren()
     for subItem in childs:
           print subItem.get('id')

4.插入儿子结点
方法一:

 item = Element("item", {'sid' : '1713', 'name' : 'ityouhui'})
 root.append(item)

方法二:
SE(root,'item',{'sid':'1713','name':'ityouhui'})

法一的好处是插入之后可以对item继续操作。法二是写法上简单,其中SE就是SubElement,在引入处做了声明;

5.操作属性
获取Element的某个属性值(eg:获取item的 name)

print root.find('item/name').text
print item.get('name')

获取Element所有属性
print item.items()       # [('sid', '1712'), ('name', '大CC')]
print item.attrib        # {'sid': '1712', 'name': '大CC'}

6.美化XML
在写入之前,传入root调用此函数,写入的XML文件格式整齐美观:

indent(root)
book.write(xmlfile,'utf-8')

## Get pretty look
def indent( elem, level=0):
    i = "\n" + level*"  "
    if len(elem):
        if not elem.text or not elem.text.strip():
            elem.text = i + "  "
        for e in elem:
            indent(e, level+1)
        if not e.tail or not e.tail.strip():
            e.tail = i
    if level and (not elem.tail or not elem.tail.strip()):
        elem.tail = i
    return elem

Python 相关文章推荐
python发腾讯微博代码分享
Jan 10 Python
PYTHON压平嵌套列表的简单实现
Jun 08 Python
Python 多线程的实例详解
Sep 07 Python
13个最常用的Python深度学习库介绍
Oct 28 Python
python实现栅栏加解密 支持密钥加密
Mar 20 Python
python3 pygame实现接小球游戏
May 14 Python
Django框架中间件定义与使用方法案例分析
Nov 28 Python
python opencv图片编码为h264文件的实例
Dec 12 Python
Python实现画图软件功能方法详解
Jul 28 Python
利用Python实现Json序列化库的方法步骤
Sep 09 Python
python 判断一组数据是否符合正态分布
Sep 23 Python
安装并免费使用Pycharm专业版(学生/教师)
Sep 24 Python
一个简单的python程序实例(通讯录)
Nov 29 #Python
Python时间戳与时间字符串互相转换实例代码
Nov 28 #Python
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
Nov 28 #Python
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
Nov 27 #Python
Pyramid添加Middleware的方法实例
Nov 27 #Python
linux环境下安装pyramid和新建项目的步骤
Nov 27 #Python
Pyramid将models.py文件的内容分布到多个文件的方法
Nov 27 #Python
You might like
用PHP获取Google AJAX Search API 数据的代码
2010/03/12 PHP
php随机获取金山词霸每日一句的方法
2015/07/09 PHP
js下用gb2312编码解码实现方法
2009/12/31 Javascript
页面加载完毕后滚动条自动滚动一定位置
2014/02/20 Javascript
JQuery EasyUI 数字格式化处理示例
2014/05/05 Javascript
jQuery CSS()方法改变现有的CSS样式
2014/08/20 Javascript
纯javascript实现四方向文本无缝滚动效果
2015/06/16 Javascript
jQuery ajax 当async为false时解决同步操作失败的问题
2016/11/18 Javascript
JS中的JSON对象的定义和取值实现代码
2018/05/09 Javascript
jQuery 实现倒计时天,时,分,秒功能
2018/07/31 jQuery
关于微信公众号开发无法支付的问题解决
2018/12/28 Javascript
微信小程序五子棋游戏的悔棋实现方法【附demo源码下载】
2019/02/20 Javascript
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
VsCode与Node.js知识点详解
2019/09/05 Javascript
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
[01:04:02]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第二场 1月24日
2021/03/11 DOTA
python字符串连接方法分析
2016/04/12 Python
Python字典简介以及用法详解
2016/11/15 Python
Python 判断是否为质数或素数的实例
2017/10/30 Python
Python机器学习算法之k均值聚类(k-means)
2018/02/23 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
python实现得到当前登录用户信息的方法
2019/06/21 Python
Django实现将一个字典传到前端显示出来
2020/04/03 Python
使用opencv中匹配点对的坐标提取方式
2020/06/04 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
2020/09/24 Python
泰国时尚电商:POMELO Fashion
2020/03/11 全球购物
若通过ObjectOutputStream向一个文件中多次以追加方式写入object,为什么用ObjectInputStream读取这些object时会产生StreamCorruptedException?
2016/10/17 面试题
测控技术自荐信
2014/06/05 职场文书
升学宴演讲稿
2014/09/01 职场文书
五五普法心得体会
2014/09/04 职场文书
助学贷款贫困证明
2014/09/23 职场文书
铁路安全反思材料
2014/12/24 职场文书
给老师的感谢信
2015/01/20 职场文书
劳动保障事务所个人工作总结
2015/08/12 职场文书
实习员工转正的评语汇总,以备不时之需
2019/12/17 职场文书
Win11 Dev 预览版25174.1000发布 (附更新修复内容汇总)
2022/08/05 数码科技