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在windows下创建隐藏窗口子进程的方法
Jun 04 Python
Python 中的with关键字使用详解
Sep 11 Python
Python xlwt设置excel单元格字体及格式
Apr 18 Python
python导入csv文件出现SyntaxError问题分析
Dec 15 Python
Python Json模块中dumps、loads、dump、load函数介绍
May 15 Python
python 字典操作提取key,value的方法
Jun 26 Python
为什么从Python 3.6开始字典有序并效率更高
Jul 15 Python
pytorch实现onehot编码转为普通label标签
Jan 02 Python
使用sklearn的cross_val_score进行交叉验证实例
Feb 28 Python
python 如何使用find和find_all爬虫、找文本的实现
Oct 16 Python
python解决OpenCV在读取显示图片的时候闪退的问题
Feb 23 Python
学会用Python实现滑雪小游戏,再也不用去北海道啦
May 20 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部分常见问题总结
2008/03/27 PHP
php中session与cookie的比较
2015/01/27 PHP
30个让人兴奋的视差滚动(Parallax Scrolling)效果网站
2012/03/04 Javascript
Jquery实现鼠标移上弹出提示框、移出消失思路及代码
2013/05/19 Javascript
一个JS的日期格式化算法示例
2013/07/31 Javascript
javascript+HTML5自定义元素播放焦点图动画
2016/02/21 Javascript
javascript中eval解析JSON字符串
2016/02/27 Javascript
详解Nodejs之静态资源处理
2017/06/05 NodeJs
Vue之Watcher源码解析(2)
2017/07/19 Javascript
Vue组件选项props实例详解
2017/08/18 Javascript
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
2019/04/15 Javascript
一文了解vue-router之hash模式和history模式
2019/05/31 Javascript
node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例
2019/12/23 Javascript
微信小程序实现签字功能
2019/12/23 Javascript
JS 逻辑判断不要只知道用 if-else 和 switch条件判断(小技巧)
2020/05/27 Javascript
微信小程序返回上一级页面的实现代码
2020/06/19 Javascript
微信小程序通过websocket实时语音识别的实现代码
2020/08/19 Javascript
在Python中使用模块的教程
2015/04/27 Python
Python实现简单的代理服务器
2015/07/25 Python
tensorflow创建变量以及根据名称查找变量
2018/03/10 Python
Django自定义用户登录认证示例代码
2019/06/30 Python
python json load json 数据后出现乱序的解决方案
2020/02/27 Python
PyQt使用QPropertyAnimation开发简单动画
2020/04/02 Python
使用django自带的user做外键的方法
2020/11/30 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
CSS3对图片照片进行边缘模糊处理的实现
2018/08/08 HTML / CSS
潘多拉意大利官方网上商城:网上选购PANDORA珠宝
2018/10/07 全球购物
JAKO-O德国野酷台湾站:德国首屈一指的婴幼童用品品牌
2019/01/14 全球购物
生物科学专业个人求职信范文
2013/12/07 职场文书
大学本科毕业生求职信范文
2013/12/18 职场文书
给老婆的保证书范文
2014/04/28 职场文书
中学生纪念九一八事变演讲稿
2014/09/14 职场文书
个人遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
个人先进材料范文
2014/12/30 职场文书
离婚撤诉申请书范本
2015/05/18 职场文书
情况说明书怎么写
2015/10/08 职场文书