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 相关文章推荐
使用wxPython获取系统剪贴板中的数据的教程
May 06 Python
读写json中文ASCII乱码问题的解决方法
Nov 05 Python
使用python语言,比较两个字符串是否相同的实例
Jun 29 Python
python opencv读mp4视频的实例
Dec 07 Python
使用python对文件中的单词进行提取的方法示例
Dec 21 Python
Python二叉搜索树与双向链表转换算法示例
Mar 02 Python
python redis 批量设置过期key过程解析
Nov 26 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
Feb 26 Python
TensorFlow的reshape操作 tf.reshape的实现
Apr 19 Python
Python调用shell命令常用方法(4种)
May 11 Python
Python过滤序列元素的方法
Jul 31 Python
详解Anaconda安装tensorflow报错问题解决方法
Nov 01 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将会员数据导入到ucenter的代码
2010/07/18 PHP
PHP Session 变量的使用方法详解与实例代码
2013/09/11 PHP
PHP实现图片自动清理的方法
2015/07/08 PHP
nodejs实现的一个简单聊天室功能分享
2014/12/06 NodeJs
jQuery+slidereveal实现的面板滑动侧边展出效果
2015/03/14 Javascript
jQuery遍历DOM元素与节点方法详解
2016/04/14 Javascript
jQuery针对input的class属性写了多个值情况下的选择方法
2016/06/03 Javascript
KnockoutJS 3.X API 第四章之click绑定
2016/10/10 Javascript
Angular2表单自定义验证器的实现
2016/10/19 Javascript
详解Javascript几种跨域方式总结
2017/02/27 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
2018/07/13 Javascript
微信小程序使用wxParse解析html的实现示例
2018/08/30 Javascript
解决一个微信号同时支持多个环境网页授权问题
2019/08/07 Javascript
vue源码中的检测方法的实现
2019/09/26 Javascript
JS数组方法push()、pop()用法实例分析
2020/01/18 Javascript
jQuery+ajax实现文件上传功能
2020/12/22 jQuery
原生JavaScript实现幻灯片效果
2021/02/19 Javascript
使用python的chardet库获得文件编码并修改编码
2014/01/22 Python
使用Python发送邮件附件以定时备份MySQL的教程
2015/04/25 Python
Python的Tornado框架实现异步非阻塞访问数据库的示例
2016/06/30 Python
Python中顺序表的实现简单代码分享
2018/01/09 Python
pandas object格式转float64格式的方法
2018/04/10 Python
python中open函数的基本用法示例
2019/09/07 Python
Python爬取破解无线网络wifi密码过程解析
2019/09/17 Python
pymysql的简单封装代码实例
2020/01/08 Python
Python log模块logging记录打印用法解析
2020/01/20 Python
浅谈基于HTML5的在线视频播放方案
2016/02/18 HTML / CSS
美国购买肉、鸭、家禽、鹅肝和熟食网站:D’Artagnan
2018/11/13 全球购物
匡威英国官网:Converse英国
2018/12/02 全球购物
汽车维修专业个人求职信范文
2014/01/01 职场文书
自动化专业大学生职业生涯规划范文:爱拚才会赢
2014/09/12 职场文书
小学二年级数学教学计划
2015/01/20 职场文书
创业计划书之都市休闲农庄
2019/12/28 职场文书
MySQL 不等于的三种使用及区别
2021/06/03 MySQL
CSS3 Tab动画实例之背景切换动态效果
2021/08/23 HTML / CSS
golang操作redis的客户端包有多个比如redigo、go-redis
2022/04/14 Golang