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处理PHP数组文本文件实例
Sep 18 Python
Python爬虫爬取一个网页上的图片地址实例代码
Jan 16 Python
解决Python3中的中文字符编码的问题
Jul 18 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
Sep 17 Python
python实现AES加密与解密
Mar 28 Python
python制作简单五子棋游戏
Jun 18 Python
python简单区块链模拟详解
Jul 03 Python
python celery分布式任务队列的使用详解
Jul 08 Python
Win10环境python3.7安装dlib模块趟过的坑
Aug 01 Python
pandas的to_datetime时间转换使用及学习心得
Aug 11 Python
用python的turtle模块实现给女票画个小心心
Nov 23 Python
Spring Cloud Feign高级应用实例详解
Dec 10 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+mysql扎实个人基本功
2008/03/27 PHP
php上传图片到指定位置路径保存到数据库的具体实现
2013/12/30 PHP
Laravel 5.0 发布 新版本特性详解
2015/02/10 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
2017/08/10 PHP
PHP函数按引用传递参数及函数可选参数用法示例
2018/06/04 PHP
PHP中使用CURL发送get/post请求上传图片批处理功能
2018/10/15 PHP
php集成开发环境详解
2019/09/24 PHP
js或者jquery判断图片是否加载完成实现代码
2013/03/20 Javascript
js几秒以后倒计时跳转示例
2013/12/26 Javascript
用jquery.sortElements实现table排序
2014/05/04 Javascript
使用jquery制作弹出框效果
2015/04/03 Javascript
总结Javascript中数组各种去重的方法
2016/10/04 Javascript
JavaScript创建对象的七种方式(推荐)
2017/06/26 Javascript
基于JS对象创建常用方式及原理分析
2017/06/28 Javascript
利用JS实现scroll自定义滚动效果详解
2017/10/17 Javascript
在vue项目中安装使用Mint-UI的方法
2017/12/27 Javascript
如何利用@angular/cli V6.0直接开发PWA应用详解
2018/05/06 Javascript
javascript设计模式 ? 单例模式原理与应用实例分析
2020/04/09 Javascript
vue实现简单加法计算器
2020/10/22 Javascript
python中实现精确的浮点数运算详解
2017/11/02 Python
opencv python 2D直方图的示例代码
2018/07/20 Python
Python寻找路径和查找文件路径的示例
2019/07/10 Python
flask框架自定义url转换器操作详解
2020/01/25 Python
Django vue前后端分离整合过程解析
2020/11/20 Python
python绘图模块之利用turtle画图
2021/02/12 Python
OLEDBConnection和SQLConnection有什么区别
2013/05/31 面试题
最新优秀教师个人先进事迹材料
2014/05/06 职场文书
2014国庆节餐厅促销活动策划方案
2014/09/16 职场文书
公安四风对照检查材料思想汇报
2014/10/11 职场文书
民事二审代理词
2015/05/25 职场文书
2015年乡镇纪委工作总结
2015/05/26 职场文书
指导教师推荐意见
2015/06/05 职场文书
党员理论学习心得体会
2016/01/21 职场文书
导游词之上海东方明珠塔
2019/09/25 职场文书
用Python实现一个打字速度测试工具来测试你的手速
2021/05/28 Python
Django中session进行权限管理的使用
2021/07/09 Python