Xml模块


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

举个简单的例子,xml是一种标记性语言,格式类似于<data>数据</data>,这样一个封闭起来是一个整体

以上就是xml内部的样子,可以将其想象成一棵树,如下图所示

利用python解析xml文件

  • xml模块的导入

    import xml.etree.ElementTree as ET

1.获取标签的相关信息接口

一般访问xml文件的时候,先得到根节点,然后再遍历根节点,得到根节点的子节点相关信息

#得到树根
root = tree.getroot() for element in root:
print(element.tag) #获取标签名
print(element.attrib) #获取标签属性
print(element.text) #获取标签值

2.xml文件的查找操作

查找操作使用.iter("标签名")来做,这个函数会找到符合标签名的标签继承到一个可迭代的序类中。这个是从根节点开始搜索整棵树

#获取所有"rank"标签的text
for element in root.iter("rank"):
print(element.text) #获取标签值

查找使用.findall("标签名"),这个函数会找到符合标签名的所有标签集成到一个可迭代的序列中。这个是只能找当前这一级的

#获取所有根节点下的名字为country的标签。只能在自己的一级找
for element in root.findall("country"):
print(element.tag) #获取标签名

查找使用.find("标签名"),这个函数会找到符合标签名的第一个标签。然后返回该标签 的子标签的序列

#找到root节点下标签名为country的标签,并返回其子标签组成的序列
for element in root.find("country"):
print(element.tag) #获取标签名

3.xml的删除

这里分为修改标签的属性和标签的内容

import xml.etree.ElementTree as ET

#得到xml树
tree = ET.parse("xml_lesson") #得到树根
root = tree.getroot() #找到root节点下标签名为country的标签,并返回其子标签组成的序列
node = root.find("country")
node.set("name","China") node = node.find("rank")
node.text = "" #写回原文件
tree.write("xml_lesson")

4.xml文件的创建

主要思想是先创建节点,再把节点打包成树

import xml.etree.ElementTree as ET

#创建根节点
root = ET.Element("data")
#创建子节点,并添加属性
age = ET.SubElement(root,"age")
age.attrib = {"age":"age attribute"}
age.text = "" #创建elementtree对象,写文件
tree = ET.ElementTree(root)
tree.write("test.xml")

【python标准库模块五】Xml模块学习的更多相关文章

  1. Python标准库笔记(10) — itertools模块

    itertools 用于更高效地创建迭代器的函数工具. itertools 提供的功能受Clojure,Haskell,APL和SML等函数式编程语言的类似功能的启发.它们的目的是快速有效地使用内存, ...

  2. Python标准库笔记(11) — Operator模块

    Operator--标准功能性操作符接口. 代码中使用迭代器时,有时必须要为一个简单表达式创建函数.有些情况这些函数可以用一个lambda函数实现,但是对于某些操作,根本没必要去写一个新的函数.因此o ...

  3. Python标准库笔记(9) — functools模块

    functools 作用于函数的函数 functools 模块提供用于调整或扩展函数和其他可调用对象的工具,而无需完全重写它们. 装饰器 partial 类是 functools 模块提供的主要工具, ...

  4. Python标准库笔记(8) — pprint模块

    struct模块提供了用于在字节字符串和Python原生数据类型之间转换函数,比如数字和字符串. Python版本: 2.x & 3.x 该模块作用是完成Python数值和C语言结构体的Pyt ...

  5. python标准库介绍——27 random 模块详解

    ==random 模块== "Anyone who considers arithmetical methods of producing random digits is, of cour ...

  6. python标准库介绍——12 time 模块详解

    ==time 模块== ``time`` 模块提供了一些处理日期和一天内时间的函数. 它是建立在 C 运行时库的简单封装. 给定的日期和时间可以被表示为浮点型(从参考时间, 通常是 1970.1.1 ...

  7. python标准库介绍——10 sys 模块详解

    ==sys 模块== ``sys`` 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分. === 处理命令行参数=== 在解释器启动后, ``argv`` 列表包含了传递给脚本的所有 ...

  8. python标准库介绍——33 thread 模块详解

    ?==thread 模块== (可选) ``thread`` 模块提为线程提供了一个低级 (low_level) 的接口, 如 [Example 3-6 #eg-3-6] 所示. 只有你在编译解释器时 ...

  9. python标准库介绍——31 threading 模块详解

    threading 模块 (可选) ``threading`` 模块为线程提供了一个高级接口, 如 [Example 3-1 #eg-3-1] 所示. 它源自 Java 的线程实现. 和低级的 ``t ...

  10. python标准库介绍——29 zlib 模块详解

    ==zlib 模块== (可选) ``zlib`` 模块为 "zlib" 压缩提供支持. (这种压缩方法是 "deflate".) [Example 2-43 ...

随机推荐

  1. 关于ZK框架的onScroll事件的问题

    由于我现在所在的公司用到的zk框架,遇到了一个需求frozen on top. 简单来说就是滚动超过范围后,希望有一块东西停留在滚动窗口的顶部. 一.zk框架 查看了zk的8.x版本,发现组件的支持的 ...

  2. python——常用模块2

    python--常用模块2 1 logging模块 1.1 函数式简单配置 import logging logging.debug("debug message") loggin ...

  3. Python:使用youtube-dl+ffmpeg+FQ软件下载youtube视频

    声明:本文所述内容都是从http://blog.csdn.net/u011475134/article/details/71023612博文中学习而来. 背景: 一同学想通过FQ软件下载一些youtu ...

  4. javascript中的事件类型

    表单事件 submit reset click change focus blur input window事件 load DomContentLoaded readyStatechange unlo ...

  5. IdentityServer4-介绍大纲(译文)

    简介 IdentityServer4是一个基于ASP.NET CORE2使用OAuth2.0协议和OpenID Connect的框架 特性如下: Authentiaction作为一个Service 集 ...

  6. node.js使用node-xlsx读写数据

    下面是包含了读写的样例: var xlsx = require('node-xlsx'); var fs = require('fs'); // 读取文件内容 var data = xlsx.pars ...

  7. Android重构篇——项目架构篇

    版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/6823777.html 前言 大家好,我是Cavalier ...

  8. “百度杯”CTF比赛 九月场_再见CMS(齐博cms)

    题目在i春秋ctf大本营 又是一道cms的题,打开御剑一通乱扫,发现后台登录地址,访问一看妥妥的齐博cms 记得以前很久以前利用一个注入通用漏洞,这里我贴上链接,里面有原理与利用方法详细说明: 齐博c ...

  9. mysql 从聚合函数group by到sql_mode

    说到group by, 想必大家都不陌生, 就是对查询的数据进行分组,我们可以通过该操作实现一些特殊需求,比如去重. 最近在项目中使用HQL:" from TSjrz where CBh = ...

  10. [SCOI2012]滑雪与时间胶囊

    题目描述 a180285非常喜欢滑雪.他来到一座雪山,这里分布着MMM条供滑行的轨道和NNN个轨道之间的交点(同时也是景点),而且每个景点都有一编号iii(1≤i≤N1 \le i \le N1≤i≤ ...