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处理文本文件并生成指定格式的文件
Jul 31 Python
解决python3在anaconda下安装caffe失败的问题
Jun 15 Python
Python 网页解析HTMLParse的实例详解
Aug 10 Python
在Python中获取两数相除的商和余数方法
Nov 10 Python
python TF-IDF算法实现文本关键词提取
May 29 Python
python五子棋游戏的设计与实现
Jun 18 Python
python实现猜拳小游戏
Apr 05 Python
Python更换pip源方法过程解析
May 19 Python
Django获取model中的字段名和字段的verbose_name方式
May 19 Python
Python3 socket即时通讯脚本实现代码实例(threading多线程)
Jun 01 Python
Python descriptor(描述符)的实现
Nov 15 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
Mar 03 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 JSON中文乱码的解决方法详解
2013/06/06 PHP
解析argc argv在php中的应用
2013/06/24 PHP
Laravel5权限管理方法详解
2016/07/26 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
2018/12/08 PHP
PHP赋值的内部是如何跑的详解
2019/01/13 PHP
PHP FileSystem 文件系统常用api整理总结
2019/07/12 PHP
Yii使用EasyWechat实现小程序获取用户的openID的方法
2020/04/29 PHP
超越Jquery_01_isPlainObject分析与重构
2010/10/20 Javascript
jquery和javascript中如何将一元素的内容赋给另一元素
2014/01/09 Javascript
针对BootStrap中tabs控件的美化和完善(推荐)
2016/07/06 Javascript
封装获取dom元素的简单实例
2016/07/08 Javascript
微信小程序 教程之WXSS
2016/10/18 Javascript
Bootstrap基本插件学习笔记之折叠(22)
2016/12/08 Javascript
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
Vue.js实现双向数据绑定方法(表单自动赋值、表单自动取值)
2018/08/27 Javascript
vue生命周期和react生命周期对比【推荐】
2018/09/19 Javascript
深入浅析Vue中mixin和extend的区别和使用场景
2019/08/01 Javascript
layui form表单提交后实现自动刷新
2019/10/25 Javascript
Vue.js实现立体计算器
2020/02/22 Javascript
可拖拽组件slider.js使用方法详解
2020/12/04 Javascript
分享一下如何编写高效且优雅的 Python 代码
2017/09/07 Python
NumPy.npy与pandas DataFrame的实例讲解
2018/07/09 Python
Django 路由控制的实现
2019/07/17 Python
django之状态保持-使用redis存储session的例子
2019/07/28 Python
python控制台实现tab补全和清屏的例子
2019/08/20 Python
使用 Python 处理3万多条数据只要几秒钟
2020/01/19 Python
佳能英国官方网站:Canon UK
2017/08/08 全球购物
Etam艾格英国官网:法国著名女装品牌
2019/04/15 全球购物
拾金不昧表扬信范文
2014/01/11 职场文书
大学生学习2014年全国两会心得体会
2014/03/12 职场文书
租房安全协议书
2014/08/20 职场文书
公积金接收函格式
2015/01/30 职场文书
狼牙山五壮士观后感
2015/06/09 职场文书
运动员入场词
2015/07/18 职场文书
小学语文教师研修感悟
2015/11/18 职场文书