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 相关文章推荐
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
Apr 09 Python
Python使用迭代器打印螺旋矩阵的思路及代码示例
Jul 02 Python
利用Python生成文件md5校验值函数的方法
Jan 10 Python
Python中字典和集合学习小结
Jul 07 Python
python的构建工具setup.py的方法使用示例
Oct 23 Python
python3.7简单的爬虫实例详解
Jul 08 Python
将python安装信息加入注册表的示例
Nov 20 Python
python Plotly绘图工具的简单使用
Mar 03 Python
jupyter notebook 调用环境中的Keras或者pytorch教程
Apr 14 Python
pycharm实现print输出保存到txt文件
Jun 01 Python
使用SQLAlchemy操作数据库表过程解析
Jun 10 Python
Python爬虫之爬取某文库文档数据
Apr 21 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 中英文混合排版中处理字符串常用的函数
2007/04/12 PHP
用PHP程序实现支持页面后退的两种方法
2008/06/30 PHP
php第一次无法获取cookie问题处理
2014/12/15 PHP
PHP+MYSQL中文乱码问题
2015/07/01 PHP
详解PHP实现执行定时任务
2015/12/21 PHP
jquery mobile动态添加元素之后不能正确渲染解决方法说明
2014/03/05 Javascript
原生js实现淘宝首页点击按钮缓慢回到顶部效果
2014/04/06 Javascript
JS用斜率判断鼠标进入DIV四个方向的方法
2016/11/07 Javascript
WEB开发之注册页面验证码倒计时代码的实现
2016/12/15 Javascript
详解如何使用PM2将Node.js的集群变得更加容易
2017/11/15 Javascript
jQuery.validate.js表单验证插件的使用代码详解
2018/10/22 jQuery
详解Angular模板引用变量及其作用域
2018/11/23 Javascript
微信小程序实现发送验证码按钮效果
2018/12/20 Javascript
vue element-ul实现展开和收起功能的实例代码
2020/11/25 Vue.js
Django中实现一个高性能计数器(Counter)实例
2014/07/09 Python
让python同时兼容python2和python3的8个技巧分享
2014/07/11 Python
python中使用mysql数据库详细介绍
2015/03/27 Python
python计算时间差的方法
2015/05/20 Python
Python argv用法详解
2016/01/08 Python
Python实现Smtplib发送带有各种附件的邮件实例
2017/06/05 Python
Python连接Mssql基础教程之Python库pymssql
2018/09/16 Python
详解PANDAS 数据合并与重塑(join/merge篇)
2019/07/09 Python
Anaconda+VSCode配置tensorflow开发环境的教程详解
2020/03/30 Python
keras自动编码器实现系列之卷积自动编码器操作
2020/07/03 Python
python反扒机制的5种解决方法
2021/02/06 Python
移动Web—CSS为Retina屏幕替换更高质量的图片
2012/12/24 HTML / CSS
中科前程Java笔试题
2016/11/20 面试题
优秀的教师个人的中文求职信
2013/09/21 职场文书
内科护士实习自我鉴定
2013/10/17 职场文书
教师自荐信
2013/12/10 职场文书
班级活动总结格式
2014/08/30 职场文书
2014年银行柜员工作总结
2014/11/12 职场文书
2015年学校教研室主任工作总结
2015/07/20 职场文书
Python 中random 库的详细使用
2021/06/03 Python
2022新作动画《福星小子》释出宣传影片 加入内田真礼&宫野真守配音演出
2022/04/08 日漫
MySQL数据库如何使用Shell进行连接
2022/04/12 MySQL