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 相关文章推荐
python3简单实现微信爬虫
Apr 09 Python
在Python的web框架中配置app的教程
Apr 30 Python
python文件操作之目录遍历实例分析
May 20 Python
各个系统下的Python解释器相关安装方法
Oct 12 Python
利用Python命令行传递实例化对象的方法
Nov 02 Python
利用python打印出菱形、三角形以及矩形的方法实例
Aug 08 Python
搞清楚 Python traceback的具体使用方法
May 13 Python
Python3 批量扫描端口的例子
Jul 25 Python
Python实现自定义读写分离代码实例
Nov 16 Python
在django中自定义字段Field详解
Dec 03 Python
Python在后台自动解压各种压缩文件的实现方法
Nov 10 Python
Django多个app urls配置代码实例
Nov 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
如何将一个表单同时提交到两个地方处理
2006/10/09 PHP
javascript+php实现根据用户时区显示当地时间的方法
2015/03/11 PHP
PHP执行shell脚本运行程序不产生core文件的方法
2016/12/28 PHP
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
2010/01/15 Javascript
return false,对阻止事件默认动作的一些测试代码
2010/11/17 Javascript
一次失败的jQuery优化尝试小结
2011/02/06 Javascript
jQuery源码分析-01总体架构分析
2011/11/14 Javascript
用Jquery重写windows.alert方法实现思路
2013/04/03 Javascript
详解JavaScript中undefined与null的区别
2014/03/29 Javascript
js实现漂浮回顶部按钮实例
2015/05/06 Javascript
js实现字符串和数组之间相互转换操作
2016/01/12 Javascript
AngularJS内建服务$location及其功能详解
2016/07/01 Javascript
React Native预设占位placeholder的使用
2017/09/28 Javascript
微信小程序实现两个页面传值的方法分析
2018/12/11 Javascript
bootstrap tooltips在 angularJS中的使用方法
2019/04/10 Javascript
Vue Render函数创建DOM节点代码实例
2020/07/08 Javascript
[02:26]2016国际邀请赛8月3日开战 中国军团出征西雅图
2016/08/02 DOTA
Python功能键的读取方法
2015/05/28 Python
python使用wmi模块获取windows下的系统信息 监控系统
2015/10/27 Python
用Python实现命令行闹钟脚本实例
2016/09/05 Python
python打包压缩、读取指定目录下的指定类型文件
2018/04/12 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
2019/11/11 Python
python字符串下标与切片及使用方法
2020/02/13 Python
pytorch模型存储的2种实现方法
2020/02/14 Python
Python pexpect模块及shell脚本except原理解析
2020/08/03 Python
Html5实现用户注册自动校验功能实例代码
2016/05/24 HTML / CSS
大学生实习期自我评价范文
2013/10/03 职场文书
公司授权委托书
2014/04/04 职场文书
停电调休通知
2015/04/16 职场文书
校长一岗双责责任书
2015/05/09 职场文书
幼儿园家长反馈意见
2015/06/03 职场文书
2016年六一文艺汇演开幕词
2016/03/04 职场文书
Python max函数中key的用法及原理解析
2021/06/26 Python
Windows10安装Apache2.4的方法步骤
2022/06/25 Servers
Win11 21h2可以升级22h2吗?看看你的电脑符不符合要求
2022/07/07 数码科技
python playwrigh框架入门安装使用
2022/07/23 Python