python如何处理xml,遇到非法格式的xml怎么办
Admin 2022-10-08 群英技术资讯 447 次浏览
参照官方文档,创建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')
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)对列表形式返回
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
bad.xml中找不到对应结束标记符时,内容如下:
<?xml version="1.0"?> <note> </Note>
因为区分大小写,所以</Note> 不能作为<note>的结束标记。
xml.parsers.expat.ExpatError: mismatched tag: line 3, column 2
bad.xml中属性值未包含在双引号(")之中时,遇到如下异常:
<?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
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了Pandas 缺失数据处理代码汇总,在pandas中,缺失数据显示为NaN。缺失值有3种表示方法,np.nan,none,pd.NA,更多相关介绍需要的朋友可以参考下面文章内容
参数化就是把测试过程中的数据提取出来,通过参数传递不同的数据来驱动用例运行,这篇文章主要给大家介绍了关于Python基础教程之pytest参数化的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
我们知道Django是由Python写成的,一个开放源代码的Web应用框架。本文主要给大家介绍django使用MQTT的方法,那么什么是MQTT?MQTT也叫做消息队列遥测传输协议,其最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。简单了解完MQTT,下面我们一起来看看在django中怎么使用MQTT。
网上GAN的教程太多了,这边也谈一下自己的理解,本文给大家介绍一下GAN的两部分组成,有需要的朋友可以借鉴参考下,希望能够有所帮助
这篇文章主要为大家介绍了python根据照片获取地理位置及泄露防御,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008