脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - python标准库ElementTree处理xml

python标准库ElementTree处理xml

2023-02-13 12:13wangst4321 Python

这篇文章主要为大家介绍了python标准库ElementTree处理xml的方法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

1. 示例用法

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?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>

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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为空文档时,内容如下:

?
1
<?xml version="1.0"?>

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

?
1
2
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中找不到对应结束标记符时,内容如下:

?
1
2
3
<?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;)之中时,遇到如下异常:

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

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

?
1
2
3
4
<?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的详细内容,更多关于python ElementTree处理xml的资料请关注服务器之家其它相关文章!

原文链接:https://blog.csdn.net/wangst4321/article/details/8697838

延伸 · 阅读

精彩推荐
  • PythonPython采集股票数据并制作可视化柱状图

    Python采集股票数据并制作可视化柱状图

    这篇文章主要介绍了如何利用Python采集股票数据并制作可视化柱状图,文中的示例代码讲解详细,快来跟上小编一起动手尝试一下吧...

    魔王不会哭6872022-11-22
  • PythonPython with语句上下文管理器两种实现方法分析

    Python with语句上下文管理器两种实现方法分析

    这篇文章主要介绍了Python with语句上下文管理器两种实现方法,结合实例形式较为详细的分析了Python上下文管理器的相关概念、功能、使用方法及相关操作注...

    苍松5252021-01-13
  • PythonPython如何telnet到网络设备

    Python如何telnet到网络设备

    这篇文章主要介绍了Python如何telnet到网络设备,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下...

    Singvis10842021-09-05
  • Pythonpython实现线程池的方法

    python实现线程池的方法

    这篇文章主要介绍了python实现线程池的方法,实例分析了Python线程池的原理与相关实现技巧,需要的朋友可以参考下 ...

    liujian06167952020-07-18
  • Pythonpython爬虫之利用selenium模块自动登录CSDN

    python爬虫之利用selenium模块自动登录CSDN

    这篇文章主要介绍了python爬虫之利用selenium模块自动登录CSDN,文中有非常详细的代码示例,对正在学习python的小伙伴们有很好地帮助,需要的朋友可以参考下...

    lexsaints4832021-10-18
  • PythonPython打包文件夹的方法小结(zip,tar,tar.gz等)

    Python打包文件夹的方法小结(zip,tar,tar.gz等)

    这篇文章主要介绍了Python打包文件夹的方法,结合实例形式总结分析了Python打包成zip,tar,tar.gz等格式文件的操作技巧,需要的朋友可以参考下...

    RQSLT16722020-09-08
  • Pythonpandas中去除指定字符的实例

    pandas中去除指定字符的实例

    今天小编就为大家分享一篇pandas中去除指定字符的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    Pywin16412021-02-22
  • Pythonpython嵌套字典比较值与取值的实现示例

    python嵌套字典比较值与取值的实现示例

    这篇文章主要给大家介绍了关于python嵌套字典比较值与取值的实现方法,详细介绍了python字典嵌套字典的情况下获取某个key的value的相关内容,分享出来供...

    北漂的雷子4352020-12-15