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通过socket查询whois的方法
Jul 18 Python
Python对文件操作知识汇总
May 15 Python
Python 实现数据库(SQL)更新脚本的生成方法
Jul 09 Python
对python 各种删除文件失败的处理方式分享
Apr 24 Python
pandas Dataframe行列读取的实例
Jun 08 Python
python 使用值来排序一个字典的方法
Nov 16 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
Apr 10 Python
简单了解Django ContentType内置组件
Jul 23 Python
django实现web接口 python3模拟Post请求方式
Nov 19 Python
tensorflow的计算图总结
Jan 12 Python
如何在django中实现分页功能
Apr 22 Python
python实现三阶魔方还原的示例代码
Apr 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 文件上传代码(限制jpg文件)
2010/01/05 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
php合并数组并保留键值的实现方法
2018/03/12 PHP
七种PHP开发环境搭建工具
2020/06/28 PHP
JavaScript和JQuery实用代码片段(一)
2010/04/07 Javascript
点击标签切换和自动切换DIV选项卡
2014/08/10 Javascript
javascript模拟实现ajax加载框实例
2014/10/15 Javascript
jQuery trigger()方法用法介绍
2015/01/13 Javascript
2则自己编写的jQuery特效分享
2015/02/26 Javascript
jQuery实现高亮显示的方法
2015/03/10 Javascript
js实现同一页面多个运动效果的方法
2015/04/10 Javascript
AngularJS包括详解及示例代码
2016/08/17 Javascript
jquery点击展示与隐藏更多内容
2016/12/03 Javascript
jQuery学习笔记之入门
2016/12/14 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
2017/02/16 Javascript
解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
2017/09/22 jQuery
javascript实现电脑和手机版样式切换
2017/11/10 Javascript
vuejs实现折叠面板展开收缩动画效果
2018/09/06 Javascript
详解JavaScript添加给定的标签选项
2018/09/17 Javascript
vue无限轮播插件代码实例
2019/05/10 Javascript
微信公众号获取用户地理位置并列出附近的门店的示例代码
2019/07/25 Javascript
js实现提交前对列表数据的增删改查
2020/01/16 Javascript
将Python代码打包为jar软件的简单方法
2015/08/04 Python
python3编写ThinkPHP命令执行Getshell的方法
2019/02/26 Python
Django后台管理系统的图文使用教学
2020/01/20 Python
Python使用itcaht库实现微信自动收发消息功能
2020/07/13 Python
详解appium自动化测试工具(monitor、uiautomatorviewer)
2021/01/27 Python
python中操作文件的模块的方法总结
2021/02/04 Python
Java里面StringBuilder和StringBuffer有什么区别
2016/06/06 面试题
介绍一下Transact-SQL中SPACE函数的用法
2015/09/01 面试题
公司活动策划方案
2014/01/13 职场文书
大连导游词
2015/02/12 职场文书
辛亥革命观后感
2015/06/02 职场文书
MySQL学习之基础操作总结
2022/03/19 MySQL
vue实现省市区联动 element-china-area-data插件
2022/04/22 Vue.js
Python 使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换
2022/04/24 Python