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中SOAP项目的介绍及其在web开发中的应用
Apr 14 Python
python面试题小结附答案实例代码
Apr 11 Python
python实现扫描ip地址的小程序
Apr 16 Python
python控制nao机器人身体动作实例详解
Apr 29 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
Oct 28 Python
python已协程方式处理任务实现过程
Dec 27 Python
Python字符串hashlib加密模块使用案例
Mar 10 Python
python实现Pyecharts实现动态地图(Map、Geo)
Mar 25 Python
Django+python服务器部署与环境部署教程详解
Mar 30 Python
python 读取、写入txt文件的示例
Sep 27 Python
在python3.9下如何安装scrapy的方法
Feb 03 Python
Python爬虫框架之Scrapy中Spider的用法
Jun 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
php下MYSQL limit的优化
2008/01/10 PHP
php Rename 更改文件、文件夹名称
2011/05/24 PHP
php无限遍历文件夹示例分享
2014/03/04 PHP
用 Composer构建自己的 PHP 框架之构建路由
2014/10/30 PHP
PHP使用SOAP调用API操作示例
2018/12/25 PHP
php连接mysql数据库最简单的实现方法
2019/09/24 PHP
JQuery Ajax通过Handler访问外部XML数据的代码
2010/06/01 Javascript
JQuery 应用 JQuery.groupTable.js
2010/12/15 Javascript
动态的改变IFrame的高度实现IFrame自动伸展适应高度
2012/12/28 Javascript
js css后面所带参数含义介绍
2013/08/18 Javascript
JavaScript框架(iframe)操作总结
2014/04/16 Javascript
jQuery中DOM操作实例分析
2015/01/23 Javascript
实用又漂亮的BootstrapValidator表单验证插件
2016/05/30 Javascript
js对象浅拷贝和深拷贝详解
2016/09/05 Javascript
JavaScript动态绑定详解
2017/09/14 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
2017/12/27 Javascript
微信小程序实现录音时的麦克风动画效果实例
2019/05/18 Javascript
微信小程序中如何使用flyio封装网络请求
2019/07/03 Javascript
python实现rest请求api示例
2014/04/22 Python
浅谈Python的Django框架中的缓存控制
2015/07/24 Python
Python获取指定文件夹下的文件名的方法
2018/02/06 Python
python实现csv格式文件转为asc格式文件的方法
2018/03/23 Python
详解Django之admin组件的使用和源码剖析
2018/05/04 Python
python读写csv文件并增加行列的实例代码
2019/08/01 Python
CSS3制作半透明边框(Facebox)类似渐变
2012/12/09 HTML / CSS
CSS3实现千变万化的文字阴影text-shadow效果设计
2016/04/26 HTML / CSS
Lululemon英国官网:加拿大瑜伽服装品牌
2019/01/14 全球购物
伯克斯奥特莱斯:Burkes Outlet
2019/03/30 全球购物
戴森比利时官方网站:Dyson BE
2020/10/03 全球购物
什么是反射
2012/03/17 面试题
大学生社会实践方案
2014/05/11 职场文书
拾金不昧感谢信
2015/01/21 职场文书
债务追讨律师函
2015/06/24 职场文书
班主任工作经验交流会总结
2015/11/02 职场文书
浅谈mysql执行过程以及顺序
2021/05/12 MySQL
总结一些Java常用的加密算法
2021/06/11 Java/Android