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 Tkinter简单布局实例教程
Sep 03 Python
详解Python的Django框架中Manager方法的使用
Jul 21 Python
使用Python保存网页上的图片或者保存页面为截图
Mar 05 Python
python读取各种文件数据方法解析
Dec 29 Python
python的移位操作实现详解
Aug 21 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
Feb 18 Python
Django-migrate报错问题解决方案
Apr 21 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
Apr 27 Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
Jun 02 Python
用python写爬虫简单吗
Jul 28 Python
Pycharm 跳转回之前所在页面的操作
Feb 05 Python
Python re.sub 反向引用的实现
Jul 07 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
11个PHPer必须要了解的编程规范
2014/09/22 PHP
使用PHP开发留言板功能
2019/11/19 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
dojo 之基础篇(三)之向服务器发送数据
2007/03/24 Javascript
JavaScript事件处理器中的event参数使用介绍
2013/05/24 Javascript
jQuery的$.proxy()应用示例介绍
2014/04/03 Javascript
js鼠标悬浮出现遮罩层的方法
2015/01/28 Javascript
js实现文字跟随鼠标移动而移动的方法
2015/02/28 Javascript
jquery制做精致的倒计时特效
2016/06/13 Javascript
javascript使用 concat 方法对数组进行合并的方法
2016/09/08 Javascript
react.js使用webpack搭配环境的入门教程
2017/08/14 Javascript
快速将Vue项目升级到webpack3的方法步骤
2017/09/14 Javascript
Vue手把手教你撸一个 beforeEnter 钩子函数
2018/04/24 Javascript
Javascript实现秒表倒计时功能
2018/11/17 Javascript
node实现mock-plugin中间件的方法
2019/12/25 Javascript
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
2020/10/15 Javascript
[03:00]2014DOTA2国际邀请赛 Titan淘汰潸然泪下Ohaiyo专访
2014/07/15 DOTA
Python 第一步 hello world
2009/09/25 Python
爬山算法简介和Python实现实例
2014/04/26 Python
Python中使用Boolean操作符做真值测试实例
2015/01/30 Python
Django框架实现的分页demo示例
2019/05/25 Python
Python爬虫工具requests-html使用解析
2020/04/29 Python
python如何实现DES加密
2020/09/21 Python
CSS3解决移动页面上点击链接触发色块的问题
2016/06/03 HTML / CSS
css3模拟jq点击事件的实例代码
2017/07/06 HTML / CSS
HTML5 canvas基本绘图之图形组合
2016/06/27 HTML / CSS
非凡女性奢华谦虚风格:The Modist
2017/10/28 全球购物
武汉某公司的C#笔试题面试题
2015/12/25 面试题
人力资源管理专业毕业生自我评价
2013/09/21 职场文书
畜牧兽医本科生个人的自我评价
2013/10/11 职场文书
元宵晚会主持词
2014/03/25 职场文书
移风易俗倡议书
2014/04/15 职场文书
大学生实习证明
2015/06/16 职场文书
安全第一课观后感
2015/06/18 职场文书
工作总结之小学教师体育工作范文(3篇)
2019/10/07 职场文书
windows11怎么查看wifi密码? win11查看wifi密码的技巧
2021/11/21 数码科技