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笔记(叁)继续学习
Oct 24 Python
浅谈Python中函数的参数传递
Jun 21 Python
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
Aug 08 Python
Python星号*与**用法分析
Feb 02 Python
python简单商城购物车实例代码
Mar 15 Python
Python 删除整个文本中的空格,并实现按行显示
Jul 24 Python
python版opencv摄像头人脸实时检测方法
Aug 03 Python
Python sorted函数详解(高级篇)
Sep 18 Python
wxpython+pymysql实现用户登陆功能
Nov 19 Python
Pyqt助手安装PyQt5帮助文档过程图解
Nov 20 Python
python 实现百度网盘非会员上传超过500个文件的方法
Jan 07 Python
python中pandas.read_csv()函数的深入讲解
Mar 29 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
一个好用的分页函数
2006/11/16 PHP
php简单提示框alert封装函数
2010/08/08 PHP
基于php缓存的详解
2013/05/15 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
2014/06/25 PHP
php强制运行广告的方法
2014/12/01 PHP
php返回当前日期或者指定日期是周几
2015/05/21 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
2016/11/29 PHP
laravel解决迁移文件一次删除创建字段报错的问题
2019/10/24 PHP
再谈IE中Flash控件的自动激活 ObjectWrap
2007/03/09 Javascript
Autocomplete Textbox Example javascript实现自动完成成功
2007/08/17 Javascript
关于js类的定义
2011/06/28 Javascript
Jquery利用mouseenter和mouseleave实现鼠标经过弹出层且可以点击
2014/02/12 Javascript
JavaScript中的console.dir()函数介绍
2014/12/29 Javascript
如何获取元素的最终background-color
2017/02/06 Javascript
ES6新特性之Symbol类型用法分析
2017/03/31 Javascript
JS实现电商放大镜效果
2017/08/24 Javascript
详解vue-cli脚手架中webpack配置方法
2018/08/22 Javascript
微信开发之企业付款到银行卡接口开发的示例代码
2018/09/18 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
谈谈React中的Render Props模式
2018/12/06 Javascript
详解在create-react-app使用less与antd按需加载
2018/12/06 Javascript
微信小程序常见页面跳转操作简单示例
2019/05/01 Javascript
js 实现watch监听数据变化的代码
2019/10/13 Javascript
JavaScript实现省市联动效果
2019/11/22 Javascript
通过实例解析json与jsonp原理及使用方法
2020/09/27 Javascript
Python登录注册验证功能实现
2018/06/18 Python
python学习--使用QQ邮箱发送邮件代码实例
2019/04/16 Python
python银行系统实现源码
2019/10/25 Python
python中p-value的实现方式
2019/12/16 Python
Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
2020/10/10 Python
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
统计学专业毕业生的自我评价分享
2013/11/28 职场文书
2014年党员自我评议总结
2014/09/23 职场文书
Go缓冲channel和非缓冲channel的区别说明
2021/04/25 Golang
Keras在mnist上的CNN实践,并且自定义loss函数曲线图操作
2021/05/25 Python
MySQL创建管理LIST分区
2022/04/13 MySQL