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 相关文章推荐
仅用50行代码实现一个Python编写的计算器的教程
Apr 17 Python
Python获取文件所在目录和文件名的方法
Jan 12 Python
浅谈Python中的可变对象和不可变对象
Jul 07 Python
python 中的list和array的不同之处及转换问题
Mar 13 Python
python 美化输出信息的实例
Oct 15 Python
Python爬虫将爬取的图片写入world文档的方法
Nov 07 Python
对Python3 goto 语句的使用方法详解
Feb 16 Python
python每天定时运行某程序代码
Aug 16 Python
Python pickle模块实现对象序列化
Nov 22 Python
python实现上传文件到linux指定目录的方法
Jan 03 Python
Python全面分析系统的时域特性和频率域特性
Feb 26 Python
方法汇总:Python 安装第三方库常用
Apr 26 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 array_intersect()函数使用代码
2009/01/14 PHP
php中显示数组与对象的实现代码
2011/04/18 PHP
php中Smarty模板初体验
2011/08/08 PHP
比较简单的百度网盘文件直链PHP代码
2013/03/24 PHP
Laravel数据库读写分离配置的方法
2019/10/13 PHP
Javascript学习笔记4 Eval函数
2010/01/11 Javascript
JavaScript中的slice()方法使用详解
2015/06/06 Javascript
举例讲解JavaScript中关于对象操作的相关知识
2015/11/16 Javascript
解析javascript瀑布流原理实现图片滚动加载
2016/03/10 Javascript
基于BootStarp的Dailog
2016/04/28 Javascript
js实现四舍五入完全保留两位小数的方法
2016/08/02 Javascript
JS轮播图实现简单代码
2021/02/19 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
2019/05/09 Javascript
Electron+vue从零开始打造一个本地播放器的方法示例
2020/10/27 Javascript
基于python爬虫数据处理(详解)
2017/06/10 Python
python 调用c语言函数的方法
2017/09/29 Python
浅谈用Python实现一个大数据搜索引擎
2017/11/28 Python
Python排序搜索基本算法之堆排序实例详解
2017/12/08 Python
pandas去重复行并分类汇总的实现方法
2019/01/29 Python
使用celery执行Django串行异步任务的方法步骤
2019/06/06 Python
python 利用turtle库绘制笑脸和哭脸的例子
2019/11/23 Python
使用pytorch和torchtext进行文本分类的实例
2020/01/08 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
2020/01/16 Python
pycharm安装及如何导入numpy
2020/04/03 Python
Python批量处理csv并保存过程解析
2020/05/16 Python
BeautifulSoup中find和find_all的使用详解
2020/12/07 Python
Django前后端分离csrf token获取方式
2020/12/25 Python
英国最红的高街时尚品牌:Topshop
2016/08/05 全球购物
租房协议书范本
2014/04/09 职场文书
机电专业求职信
2014/06/14 职场文书
营销总经理岗位职责范本
2014/09/02 职场文书
党的群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
担保贷款承诺书
2015/04/30 职场文书
公司联欢会主持词
2015/07/04 职场文书
2016年春季趣味运动会开幕词
2016/03/04 职场文书
Python如何把不同类型数据的json序列化
2021/04/30 Python