python标准库ElementTree处理xml


Posted in Python onMay 20, 2022

1. 示例用法

参照官方文档,创建country_data.xml测试文档,内容如下:

<?xml version="1.0"?>
<data>
    <country name="Liechtenstein">
        <rank>1</rank>
        <year>2008</year>
        <gdppc>141100</gdppc>
        <neighbor name="Austria" direction="E"/>
        <neighbor name="Switzerland" direction="W"/>
    </country>
    <country name="Singapore">
        <rank>4</rank>
        <year>2011</year>
        <gdppc>59900</gdppc>
        <neighbor name="Malaysia" direction="N"/>
    </country>
    <country name="Panama">
        <rank>68</rank>
        <year>2011</year>
        <gdppc>13600</gdppc>
        <neighbor name="Costa Rica" direction="W"/>
        <neighbor name="Colombia" direction="E"/>
    </country>
</data>

使用如下代码,将数据读出,打印

from xml.etree.ElementTree 
data = ElementTree.ElementTree(file='country_data.xml')
country_list = data.findall('country')   #找到所有名为‘country'的tag,返回一个Element对象列表。
for country in country_list:
    name = country.attrib.get('name', '') 
    print name, ' ', 
    for item in country:
        if item.tag == 'neighbor':
            name = item.attrib.get('name', '') 
            direction = item.attrib.get('direction', '') 
            print '{0} ({1})'.format(name, direction), ' ',
        else:
            print item.text, ' ',
    print ''

其中

data = ElementTree.ElementTree(file='country_data.xml')

获得一个ElementTree对象,也可以使用

tree = ElementTree.parse('country_data.xml')

Element对象具有如下属性和操作

elem.tag 这个Element对象的名字(tag)
elem.text 文档内容
elem.attrib 属性值字典
elem.tail 与属性一起存储的其他数据

elem[n] 返回elem的第n个子元素

elem[n] = new_elem 将elem的第n个子元素更改为不同的元素new_elem

del elem[n] 删除子元素

len(elem) 子元素的数量

elem.find(path)

elem.getchildren() 按文档顺序返回所有子元素

elem.items()将所有元素的属性值以(name, value)对列表形式返回

遇到非法格式的xml

ExpatError: no element found

bad.xml为空文档时,内容如下:

<?xml version="1.0"?>

执行如下python代码,遇到xml.parser.expat.ExpatError异常:

import xml.etree.ElementTree as ET
ET.parse('bad.xml')

xml.parsers.expat.ExpatError: no element found: line 3, column 0

ExpatError: mismatched tag

bad.xml中找不到对应结束标记符时,内容如下:

<?xml version="1.0"?>
<note>
</Note>

因为区分大小写,所以</Note> 不能作为<note>的结束标记。

xml.parsers.expat.ExpatError: mismatched tag: line 3, column 2

ExpatError: not well-formed(invalid token)

bad.xml中属性值未包含在双引号(&quot;)之中时,遇到如下异常:

<?xml version="1.0"?>
<note id=hello>
</note>

bad.xml中非法符号,在"if salary < 1000 then"语句的‘<',如下:

<?xml version="1.0"?>
<note id="hello">
if salary < 1000 then
</note

xml.parsers.expat.ExpatError: not well-formed (invalid token): line 2, column 9

以上就是python标准库ElementTree处理xml的详细内容!


Tags in this post...

Python 相关文章推荐
Python多进程编程技术实例分析
Sep 16 Python
简单的抓取淘宝图片的Python爬虫
Dec 25 Python
用Python的Django框架编写从Google Adsense中获得报表的应用
Apr 17 Python
Python实现完整的事务操作示例
Jun 20 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
Jan 17 Python
python远程连接MySQL数据库
Apr 19 Python
python对象与json相互转换的方法
May 07 Python
python视频按帧截取图片工具
Jul 23 Python
python中Lambda表达式详解
Nov 20 Python
pytorch查看通道数 维数 尺寸大小方式
May 26 Python
python实现自动清理重复文件
Aug 24 Python
Python中的 No Module named ***问题及解决
Jul 23 Python
Python中使用tkFileDialog实现文件选择、保存和路径选择
May 20 #Python
Python Flask实现进度条
May 11 #Python
Python PIL按比例裁剪图片
May 11 #Python
python 学习GCN图卷积神经网络
May 11 #Python
Python+Pillow+Pytesseract实现验证码识别
May 11 #Python
Python 绘制多因子柱状图
PyCharm 配置SSH和SFTP连接远程服务器
May 11 #Python
You might like
PHP MVC模式在网站架构中的实现分析
2010/03/04 PHP
深入解析PHP的引用计数机制
2013/06/14 PHP
PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
2014/07/11 PHP
教你php如何实现验证码
2016/01/20 PHP
PHP实现 APP端微信支付功能
2018/06/22 PHP
laravel-admin解决表单select联动时,编辑默认没选上的问题
2019/09/30 PHP
jQuery+jsp实现省市县三级联动效果(附源码)
2015/12/03 Javascript
javascript制作照片墙及制作过程中出现的问题
2016/04/04 Javascript
解决微信二次分享不显示摘要和图片的问题
2017/08/18 Javascript
微信小程序scroll-view组件实现滚动动画
2018/01/31 Javascript
Vue项目中使用WebUploader实现文件上传的方法
2019/07/21 Javascript
vuex state中的数组变化监听实例
2019/11/06 Javascript
JavaScript Date对象功能与用法学习记录
2020/04/28 Javascript
python PIL/cv2/base64相互转换实例
2020/01/09 Python
基于Python数据结构之递归与回溯搜索
2020/02/26 Python
.img/.hdr格式转.nii格式的操作
2020/07/01 Python
分享PyCharm最新激活码(真永久激活方法)不用每月找安装参数或最新激活码了
2020/12/27 Python
CSS3对背景图片的裁剪及尺寸和位置的设定方法
2016/03/07 HTML / CSS
UGG雪地靴荷兰官网:UGG荷兰
2016/09/09 全球购物
香港演唱会订票网站:StubHub香港
2019/10/10 全球购物
设计部经理的岗位职责
2013/11/16 职场文书
班组安全员工作职责
2014/02/01 职场文书
元旦联欢会策划方案
2014/06/11 职场文书
企业标语大全
2014/07/01 职场文书
演讲稿的格式及范文
2014/08/22 职场文书
2014年大堂经理工作总结
2014/11/21 职场文书
2014年法务工作总结
2014/12/11 职场文书
情人节活动总结范文
2015/02/05 职场文书
护士个人年度总结范文
2015/02/13 职场文书
2015年监理工作总结范文
2015/04/07 职场文书
党委工作总结2015
2015/04/27 职场文书
升学宴家长致辞
2015/07/27 职场文书
团组织关系介绍信
2019/06/24 职场文书
PHP获取学生成绩的方法
2021/11/17 PHP
MySQL学习之基础操作总结
2022/03/19 MySQL
CentOS安装Nginx并部署vue
2022/04/12 Servers