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编写简单文件夹内图片浏览工具
Aug 17 Python
使用paramiko远程执行命令、下发文件的实例
Oct 01 Python
Python自定义简单图轴简单实例
Jan 08 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
Jun 13 Python
更改Python的pip install 默认安装依赖路径方法详解
Oct 27 Python
Python中 CSV格式清洗与转换的实例代码
Aug 29 Python
Python常用数据类型之间的转换总结
Sep 06 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
Jan 23 Python
Python列表推导式实现代码实例
Sep 09 Python
通俗易懂了解Python装饰器原理
Sep 17 Python
详解tf.device()指定tensorflow运行的GPU或CPU设备实现
Feb 20 Python
Python爬取网站图片并保存的实现示例
Feb 26 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
比较discuz和ecshop的截取字符串函数php版
2012/09/03 PHP
php随机显示图片的简单示例
2014/02/15 PHP
thinkphp中session和cookie无效的解决方法
2014/12/19 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
2016/03/01 PHP
php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
2016/03/14 PHP
php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
2016/03/23 PHP
PHP在弹框中获取foreach中遍历的id值并传递给地址栏
2017/06/13 PHP
Jquery+WebService 校验账号是否已被注册的代码
2010/07/12 Javascript
基于jquery的一个拖拽到指定区域内的效果
2011/09/21 Javascript
使用jquery实现放大镜效果
2014/09/02 Javascript
IE浏览器下PNG相关功能
2015/07/05 Javascript
11种ASP连接数据库的方法
2015/09/18 Javascript
JQuery获取鼠标进入和离开容器的方向
2016/12/29 Javascript
基于vue+ bootstrap实现图片上传图片展示功能
2017/05/17 Javascript
bootstrap模态框远程示例代码分享
2017/05/22 Javascript
webpack实现热加载自动刷新的方法
2017/07/30 Javascript
React中jquery引用的实现方法
2017/09/12 jQuery
小程序tab页无法传递参数的方法
2018/08/03 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
2018/08/07 Javascript
从0到1构建vueSSR项目之路由的构建
2019/03/07 Javascript
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
2019/05/13 jQuery
解决vue项目获取dom元素宽高总是不准确问题
2020/07/29 Javascript
JS绘图Flot如何实现可选显示曲线图功能
2020/10/16 Javascript
vue项目中openlayers绘制行政区划
2020/12/24 Vue.js
为Python程序添加图形化界面的教程
2015/04/29 Python
Python3.4 tkinter,PIL图片转换
2018/06/21 Python
Python flask框架post接口调用示例
2019/07/03 Python
python爬虫 基于requests模块的get请求实现详解
2019/08/20 Python
详解django使用include无法跳转的解决方法
2020/03/19 Python
使用gunicorn部署django项目的问题
2020/12/30 Python
H5 canvas中width、height和style的宽高区别详解
2018/11/02 HTML / CSS
小学教师学期末自我评价
2013/09/25 职场文书
大学生专科学习生活的自我评价
2013/12/07 职场文书
优秀员工获奖感言
2014/03/01 职场文书
读《瓦尔登湖》有感:每个人都需要一个瓦尔登湖
2019/10/17 职场文书
Python列表删除重复元素与图像相似度判断及删除实例代码
2021/05/07 Python