xml即可扩展标记语言,它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。

本文主要学习的ElementTree是python的XML处理模块,它提供了一个轻量级的对象模型。在使用ElementTree模块时,需要import xml.etree.ElementTree的操作。ElementTree表示整个XML节点树,而Element表示节点数中的一个单独的节点。

XML示例一:使用XML读取本地的first.xml文件,并解析数据

以下是first.xml文件的内容

 <data>
<country name="Liechtenstein">
<rank updated="yes">2</rank>
<year>2023</year>
<gdppc>14110</gdppc>
<neighbor direction="E" name="Austria"/>
<neighbor direction="W" name="switzeriand"/>
</country>
<country name="Singapore">
<rank updated="yes">5</rank>
<year>2026</year>
<gdppc>59900</gdppc>
<neighbor direction="N" name="Malaysia"/>
</country>
<country name="Faname">
<rank updated="yes">69</rank>
<year>2019</year>
<gdppc>13360</gdppc>
<neighbor direction="W" name="Costa Rica"/>
<neighbor direction="E" name="Colombia"/>
</country>
</data>

python代码实现:

 #!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
使用XML读取本地的first.xml文件,并解析数据
"""
from xml.etree import ElementTree as ET root = ET.XML(open("first.xml", "r", encoding='utf-8').read()) #读取本地的first.xml文件,解析字符串 #通过循环读取子节点的内容
for node in root:
print(node.tag, node.attrib, node.find("year").text)

python实现读取first.xml文件并解析的结果:

XML示例二:通过.parse()方式打开文件,可以实现修改文件内容

 #!/usr/bin/env python
# -*- coding:utf-8 -*- #打开并解析文件内容
from xml.etree import ElementTree as ET tree = ET.parse("first.xml")
root = tree.getroot() #通过.getroot()获取根节点
for node in root.iter('year'): #通过.iter()迭代找到指定的子节点
new_year = int(node.text) + 1
node.text = str(new_year)
node.set('name', 'YY') #通过.set()给year节点添加一个Name属性
#del node.attrib['name'] 通过.attrib[]可删除指定的属性
head = root.find('gdppc') # 获取节点
root.remove(head) # 删除节点 #通过.write()将修改的内容从内存中写入文件
tree.write("first.xml")

示例三:创建xml文档

 #!/usr/bin/env python
# -*- coding:utf-8 -*- from xml.etree import ElementTree as ET #创建根节点
new_xml = ET.Element("namelist") #在根节点下创建子节点1
name1 = ET.SubElement(new_xml, "name", attrib={"enrolled": "yes"})
#在name1子节点下再创建孙节点
age1 = ET.SubElement(name1, "age", attrib={"checked": "no"})
sex1 = ET.SubElement(name1, "sex")
sex1.text = '' #在根节点下创建子节点2
name2 = ET.SubElement(new_xml, "name", attrib={"enrolled": "no"})
age2 = ET.SubElement(name2, "age")
age2.text = '' #生成文档对象
et = ET.ElementTree(new_xml)
et.write("new_xml.xml", encoding='utf-8', xml_declaration=True)

创建xml文档实现的结果:

python--模块学习之xml模块的更多相关文章

  1. Python常用内置模块之xml模块

    xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.从结构上,很像HTML超文本标记语言.但他们被设计的目的是不同的,超文本标记语言被设计用来显示 ...

  2. 【python标准库模块五】Xml模块学习

    Xml模块 xml本身是一种格式规范,是一种包含了数据以及数据说明的文本格式规范.在json没有兴起之前各行各业进行数据交换的时候用的就是这个.目前在金融行业也在广泛在运用. 举个简单的例子,xml是 ...

  3. python学习-52 XML模块

    XML模块 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但是json使用起来更简单. 例如:创建一个xml文件 <data> <country name=&q ...

  4. python(32)——【shelve模块】【xml模块】

    一. shelve模块 json和pickle模块的序列化和反序列化处理,他们有一个不足是在python 3中不能多次dump和load,shelve模块则可以规避这个问题. shelve模块是一个简 ...

  5. python基础学习十 logging模块详细使用【转载】

    很多程序都有记录日志的需求,并且日志中包含的信息既有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,主要用于输出 ...

  6. python基础学习笔记——os模块

    #OS模块 #os模块就是对操作系统进行操作,使用该模块必须先导入模块: import os #getcwd() 获取当前工作目录(当前工作目录默认都是当前文件所在的文件夹) result = os. ...

  7. Python 模块学习:re模块

    今天学习了Python中有关正则表达式的知识.关于正则表达式的语法,不作过多解释,网上有许多学习的资料.这里主要介绍Python中常用的正则表达式处理函数. 方法/属性 作用 match() 决定 R ...

  8. Python 模块学习:os模块

    一.os模块概述 Python os模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.(一语中的) 二.常用方法 1.os.name 输出字符串指示正在使用的平台 ...

  9. [转] Python 模块学习:os模块

    一.os模块概述 Python os模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.(一语中的) 二.常用方法 1.os.name 输出字符串指示正在使用的平台 ...

随机推荐

  1. TP5多字段排序

    有业务需求如下: select * from table where id IN (3,6,9,1,2,5,8,7) order by field(id,3,6,9,1,2,5,8,7); 这里直入主 ...

  2. Linux crond任务调度(定时任务),Linux磁盘分区/挂载

    一.crond任务调度 1.基本语法 crontab [选项] -e : 编辑 crontab定时任务 -l : 查询crontab -r : 删除当前用户所有的crontab任务 例子: 每分钟执行 ...

  3. 11. Scala数据结构(下)-集合操作

    11.1 集合元素的映射-map映射操作 11.1.1 看一个实际需求 要求:请将List(3,5,8)中所有的元素都*2,将其结果放到一个新的集合中返回,即返回一个新的List(6,10,16),请 ...

  4. tornado利用装饰器记录每个http请求

    python利用装饰器记录每个http请求 设置装饰器 from functools import wraps from datetime import datetime ""&q ...

  5. NVDLA软件架构和源码解析 第一章—内核驱动【华为云技术分享】

    驱动整体设计介绍 不同的processor Nvidia DLA的内核驱动KMD(Kernel mode driver)中,并不是把DLA当成一个设备来控制,而是把不同的功能模块当做不同的proces ...

  6. Java Base64Utils

    Java Base64Utils /** * <html> * <body> * <P> Copyright 1994 JsonInternational</ ...

  7. 整理:WPF中应用附加事件制作可以绑定命令的其他事件

    原文:整理:WPF中应用附加事件制作可以绑定命令的其他事件 目的:应用附加事件的方式定义可以绑定的事件,如MouseLeftButton.MouseDouble等等 一.定义属于Control的附加事 ...

  8. HTML转换特效相关插件

    Arctext.js Arctext.js 是基于 Lettering.js 的文字旋转插件,根据设置的旋转半径准确计算每个字母的旋转弧度并均匀分布. 虽然 CSS3 也能够实现字符旋转效果,但是要让 ...

  9. VS 对话框控件的Tab顺序问题

    我们先来直观的看看各个控件的Tab顺序吧.打开“Resource View”视图,然后在资源中找到对话框IDD_ADDITION_DIALOG,双击ID后中间客户区域出现其模板视图.在主菜单中选择“F ...

  10. pandas-21 Series和Dataframe的画图方法

    pandas-21 Series和Dataframe的画图方法 ### 前言 在pandas中,无论是series还是dataframe都内置了.plot()方法,可以结合plt.show()进行很方 ...