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下载懒人图库JavaScript特效
May 28 Python
Python温度转换实例分析
Jan 17 Python
Python定义二叉树及4种遍历方法实例详解
Jul 05 Python
对python捕获ctrl+c手工中断程序的两种方法详解
Dec 26 Python
python实现nao机器人手臂动作控制
Apr 29 Python
Python生成指定数量的优惠码实操内容
Jun 18 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
Jul 23 Python
python实现的批量分析xml标签中各个类别个数功能示例
Dec 30 Python
解析Python 偏函数用法全方位实现
Jun 26 Python
Python3爬虫中Selenium的用法详解
Jul 10 Python
python 如何调用 dubbo 接口
Sep 24 Python
python 如何停止一个死循环的线程
Nov 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
使用TinyButStrong模板引擎来做WEB开发
2007/03/16 PHP
PHP 数组基础知识小结
2010/08/20 PHP
linux下删除7天前日志的代码(php+shell)
2011/01/02 PHP
ThinkPHP 连接Oracle数据库的详细教程[全]
2012/07/16 PHP
PHP输出数组中重名的元素的几种处理方法
2012/09/05 PHP
PHP中使用TCPDF生成PDF文档实例
2014/07/01 PHP
详解PHP执行定时任务的实现思路
2015/12/21 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
PHP面向对象程序设计之接口的继承定义与用法详解
2018/12/20 PHP
关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
2010/11/30 Javascript
jQuery筛选器children()案例详解(图文)
2013/02/17 Javascript
修改file按钮的默认样式实现代码
2013/04/23 Javascript
jquery图片放大功能简单实现
2013/08/01 Javascript
js实现的黑背景灰色二级导航菜单效果代码
2015/08/24 Javascript
JavaScript对象学习小结
2015/09/02 Javascript
BootStrap的Datepicker控件使用心得分享
2016/05/25 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
2016/11/29 Javascript
Angular多选、全选、批量选择操作实例代码
2017/03/10 Javascript
使用cookie绕过验证码登录的实现代码
2017/10/12 Javascript
vue 页面加载进度条组件实例
2018/02/05 Javascript
[01:00:54]TI4正赛第二日开场
2014/07/20 DOTA
Python环境下安装使用异步任务队列包Celery的基础教程
2016/05/07 Python
在Python程序和Flask框架中使用SQLAlchemy的教程
2016/06/06 Python
python 判断参数为Nonetype类型或空的实例
2018/10/30 Python
css3动画效果小结(推荐)
2016/07/25 HTML / CSS
HTML5中判断用户是否正在浏览页面的方法
2014/05/03 HTML / CSS
Lacoste美国官网:经典POLO衫品牌
2016/10/12 全球购物
马来西亚最好的婴儿商店:Motherhood
2017/09/14 全球购物
澳大利亚床上用品、浴巾和家居用品购物网站:Bambury
2020/04/16 全球购物
厂长助理岗位职责
2013/12/27 职场文书
25岁生日感言
2014/01/13 职场文书
文明学生标兵事迹
2014/01/21 职场文书
公司财务经理岗位职责
2015/04/08 职场文书
2015年学校财务工作总结
2015/05/19 职场文书
Python中快速掌握Data Frame的常用操作
2021/03/31 Python