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. Springboot Actuator之十:actuator中的audit包

    前言这篇文章我们来分析一下org.springframework.boot.actuate.security,org.springframework.boot.actuate.audit中的代码,这2 ...

  2. 贪心 --- Y2K Accounting Bug

    Y2K Accounting Bug Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9691   Accepted: 483 ...

  3. 通过Queue控制线程并发,并监控队列执行进度

    # -*- coding:utf-8 -*- import Queue import time import threading # 需要执行的业务主体 def domain(id): time.sl ...

  4. - Git常用命令 基础 总结 MD

    目录 目录 Git常用命令 帮助 help 常用操作 初始化 clone init 提交 push 暂存 更新 撤销修改 分支 branch 查看分支 创建分支 切换分支 checkout 删除分支 ...

  5. 【LeetCode】48. Rotate Image

    Difficulty:medium  More:[目录]LeetCode Java实现 Description https://leetcode.com/problems/rotate-image/ ...

  6. JavaScript由来

    在互联网时代,网速还很差劲的时候,表单输入数据的合法性验证需要与服务器交换数据,从而加重了使用者的负担. 网景公司为了解决这种简单问题开发了JavaScript.在1995年2月网景公司在发布自己的浏 ...

  7. Android:Toolbar的图标尺寸问题

    之前一直使用的是Material Design的图标库,下载下来以后直接放入了对应文件夹,什么尺寸对应什么dpi都没有仔细研究过. 最近在Toolbar上添加几个不是MD图标库内的图标时发现,放入的图 ...

  8. 前端1-----HTML了解,内联标签(图片,超链接锚点,超链接邮箱)

    前端1-----HTML了解,内联标签(图片,超链接锚点,超链接邮箱) 一丶自定制B/S # -*-coding:utf-8-*- # Author:Ds import socket IP_PORT= ...

  9. centos7.5内核编译安装

    1.安装依赖 yum -y install gcc bc gcc-c++ ncurses ncurses-devel cmake elfutils-libelf-devel openssl-devel ...

  10. NGINX一览无余

    Nginx 是如何实现高并发的? 异步,非阻塞,使用了epoll 和大量的底层代码优化. 如果一个server采用一个进程负责一个request的方式,那么进程数就是并发数.正常情况下,会有很多进程一 ...