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中for循环的使用方法
May 14 Python
Python上传package到Pypi(代码简单)
Feb 06 Python
用Python写一个无界面的2048小游戏
May 24 Python
Python序列操作之进阶篇
Dec 08 Python
Django model序列化为json的方法示例
Oct 16 Python
CentOS下Python3的安装及创建虚拟环境的方法
Nov 28 Python
django中使用Celery 布式任务队列过程详解
Jul 29 Python
Python:合并两个numpy矩阵的实现
Dec 02 Python
opencv-python 读取图像并转换颜色空间实例
Dec 09 Python
pytorch:torch.mm()和torch.matmul()的使用
Dec 27 Python
基于matplotlib中ion()和ioff()的使用详解
Jun 16 Python
Python自动登录QQ的实现示例
Aug 28 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
德生S2000南麂列岛台湾FM收听记录
2021/03/02 无线电
BBS(php &amp; mysql)完整版(二)
2006/10/09 PHP
生成静态页面的php函数,php爱好者站推荐
2007/03/19 PHP
攻克CakePHP系列一 连接MySQL数据库
2008/10/22 PHP
php结合ajax实现赞、顶、踩功能实例
2014/05/12 PHP
laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
2019/10/16 PHP
javascript跑马灯悬停放大效果实现代码
2012/12/12 Javascript
jquery获取自定义属性(attr和prop)实例介绍
2013/04/21 Javascript
js操作table示例(个人心得)
2013/11/29 Javascript
jquery移除、绑定、触发元素事件使用示例详解
2014/04/10 Javascript
jquery结婚电子请柬特效源码分享
2015/08/21 Javascript
Linux下为Node.js程序配置MySQL或Oracle数据库的方法
2016/03/19 Javascript
浅谈es6 javascript的map数据结构
2017/12/14 Javascript
总结js中的一些兼容性易错的问题
2017/12/18 Javascript
vue的过滤器filter实例详解
2018/09/17 Javascript
对numpy中array和asarray的区别详解
2018/04/17 Python
python3 selenium 切换窗口的几种方法小结
2018/05/21 Python
Python实现的多进程和多线程功能示例
2018/05/29 Python
详解python 注释、变量、类型
2018/08/10 Python
对Python 多线程统计所有csv文件的行数方法详解
2019/02/12 Python
Python调用C语言的实现
2019/07/26 Python
flask 实现token机制的示例代码
2019/11/07 Python
python函数声明和调用定义及原理详解
2019/12/02 Python
Python使用sys.exc_info()方法获取异常信息
2020/07/23 Python
CSS3 Flexbox中flex-shrink属性的用法示例介绍
2013/12/30 HTML / CSS
HTML5实现桌面通知 提示功能
2017/10/11 HTML / CSS
美国在线珠宝商店:SZUL
2017/02/11 全球购物
实习销售业务员自我鉴定
2013/09/21 职场文书
自动化专业毕业生自荐信
2013/11/01 职场文书
二手房购房协议书范本
2014/10/05 职场文书
政风行风整改方案
2014/10/25 职场文书
工作年限证明模板
2014/11/01 职场文书
中学生综合素质自我评价
2015/03/06 职场文书
审美与表现自我评价
2015/03/09 职场文书
开网店计划分析
2019/07/30 职场文书
Mybatis 一级缓存和二级缓存原理区别
2022/09/23 Java/Android