python常用模块之xml模块

xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,在json还没诞生的年代,大家都是使用xml,目前很多传统公司的系统接口主要还是xml。

xml的格式主要如下,都是通过<>标签对来区别数据结构的:

<data>
<country name="Liechtenstein">
<rank updated="yes">2</rank>
<year updated="yes">2009</year>
<gdppc>141100</gdppc>
<neighbor direction="E" name="Austria" />
<neighbor direction="W" name="Switzerland" />
</country>
<country name="Singapore">
<rank updated="yes">5</rank>
<year updated="yes">2012</year>
<gdppc>59900</gdppc>
<neighbor direction="N" name="Malaysia" />
</country>
<country name="Panama">
<rank updated="yes">69</rank>
<year updated="yes">2012</year>
<gdppc>13600</gdppc>
<neighbor direction="W" name="Costa Rica" />
<neighbor direction="E" name="Colombia" />
</country>
</data>

xml协议在每个语言中都是支持的,在python中可以用以下模块操作xml

# 遍历
import xml.etree.ElementTree as ET tree = ET.parse("xmltest.xml") # 使用parse函数打开xml文件,并赋值给变量tree
# print(tree) # <xml.etree.ElementTree.ElementTree object at 0x000001F3FF2BEC18>
root = tree.getroot()
# print(root) # <Element 'data' at 0x00000249B582A958> 等于找到了xml文件root根的内存地址
# print(root.tag) # data 可以理解成这个内存地址代表的是data for child in root: # 此时的root是xml文件根内存地址
print('---------------------------',child.tag,child.attrib) # child.tag代表根的下一级开始的地方country,child.attrib代表参数
for i in child:
print(i.tag,i.text) # i.tag代表着country下一级开始的地方即rank等,i.text代表值 # 只查找year
for i in root.iter('year'):
print(i.text)
# 2009
# 2012
# 2012 # 修改,year都增加1
for i in root.iter('year'):
new_year = int(i.text) + 1 # i.text代表值
i.text = str(new_year) # xml中只支持str类型
i.set("update","yes") # 添加属性 tree.write("xmltest.xml") # 将更改的内容写进原文档中 # 删除
for node in root.findall('country'): # 在整个xml文件中查找country开头的k
rank = int(node.find('rank').text) # 然后找到rank的值并转换成int类型重新赋值给rank
if rank > 30:
root.remove(node) # 如果符合条件则删除root下这个country的k tree.write("new_xmltest.xml")

快来创建自己的xml文档把

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018/5/14 18:03
# @Author : XiaoYafei
# @File : 02-创建自己的xml文档.py import xml.etree.ElementTree as ET root = ET.Element('namelist') # namelist为根 name = ET.SubElement(root,"name",attrib={'enrolled':"yes"}) # 往namelist根下创建name大节点,属性为...
age = ET.SubElement(name,"age",attrib={'checked':"no"}) # 在name大节点下创建age小节点,属性为...
sex = ET.SubElement(name,"sex") # 添加小节点sex
name = ET.SubElement(name,"name")
name.text = 'xiao'
sex.text = 'male' # sex节点的值 et = ET.ElementTree(root)
et.write("my.xml",encoding='utf-8',xml_declaration='True') # 版本号声明

此时创建的my.xml文件为:

<?xml version='1.0' encoding='utf-8'?>
<namelist>
<name enrolled="yes">
<age checked="no" />
<sex>male</sex>
<name>xiao</name>
</name>
</namelist>

python常用模块之xml模块的更多相关文章

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

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

  2. python全栈开发-hashlib模块(数据加密)、suprocess模块、xml模块

    一.hashlib模块 1.什么叫hash:hash是一种算法(3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 ...

  3. python 之 random 模块、 shutil 模块、shelve模块、 xml模块

    6.12 random 模块 print(random.random()) (0,1)----float 大于0且小于1之间的小数 print(random.randint(1,3)) [1,3] 大 ...

  4. Python常用的内建模块

    PS:Python之所以自称“batteries included”,就是因为内置了许多非常有用的模块,无需额外安装和配置,即可直接使用.下面就来看看一些常用的内建模块. 参考原文 廖雪峰常用的内建模 ...

  5. logging模块、shutil模块、subprocess模块、xml模块

    logging模块 shutil模块 subprocess模块 xml模块 logging模块 函数式简单配置 import logging logging.debug('debug message' ...

  6. python16_day06【类、RE模块、subprocess模块、xml模块、shelve模块】

    一.shelve模块 import shelve # 基于pickle模块, d = shelve.open('shelve_test') class Test(object): def __init ...

  7. Python常用数据结构之collections模块

    Python数据结构常用模块:collections.heapq.operator.itertools collections collections是日常工作中的重点.高频模块,常用类型由: 计数器 ...

  8. Python常用数据结构之heapq模块

    Python数据结构常用模块:collections.heapq.operator.itertools heapq 堆是一种特殊的树形结构,通常我们所说的堆的数据结构指的是完全二叉树,并且根节点的值小 ...

  9. python常用函数库及模块巧妙用法汇总

    在用python编写脚本或写程序过程中总要遇到一些对大文件或数据进行排序,计算,循环跌代等.我想下面这些函数库一定能用得到,总结如下:便于以后备查 列表去重(传说是列表去重最高效的方法): al = ...

随机推荐

  1. 推荐个非常简单好用的AOP -- MrAdvice

    https://github.com/ArxOne/MrAdvice 太简单了,写好自己的处理类, 作为Attribute加到要拦截的方法或者类上就可以了. Here is the minimal s ...

  2. sql 筛选表中指定字段包含26某个小写字母

    SELECT *from 表名WHERE 字段 COLLATE Chinese_PRC_CS_AS LIKE '%[abcdefghijklmnopqrstuvwxyz]%'筛选表中指定字段包含26某 ...

  3. 【cs231n】反向传播笔记

    前言 首先声明,以下内容绝大部分转自知乎智能单元,他们将官方学习笔记进行了很专业的翻译,在此我会直接copy他们翻译的笔记,有些地方会用红字写自己的笔记,本文只是作为自己的学习笔记.本文内容官网链接: ...

  4. 2017 ACM-ICPC 南宁区比赛 Minimum Distance in a Star Graph

    2017-09-25 19:58:04 writer:pprp 题意看上去很难很难,但是耐心看看还是能看懂的,给你n位数字 你可以交换第一位和之后的某一位,问你采用最少的步数可以交换成目标 有五组数据 ...

  5. Extjs前端框架解决了什么问题

    Extjs 作为一套企业级富客户端前端开发框架,主要解决了以下问题: 1.DOM Ext.Element: Ext.Element.get()快捷方式Ext.get(),只能以dom的id作为参数去获 ...

  6. 外国人专门写了一篇文章,来分析为什么go在中国如此火

    外国人专门写了一篇文章,来分析为什么go在中国如此火: <Why is Golang popular in China?> http://herman.asia/why-is-go-pop ...

  7. WinCE数据通讯之SqlCE数据同步篇

    上一篇总结了WinCE通过WebService进行数据通讯的交互方式,今天整理个SqlCE数据同步方式的内容.先说下软件环境:终端平台使用WinCE5.0+SqlCE2.0,服务器使用Windows ...

  8. Linux安装ipvsadm

    一.介绍 ipvs称之为IP虚拟服务器(IP Virtual Server,简写为IPVS).是运行在LVS下的提供负载平衡功能的一种技术 二.安装 1.下载 http://www.linuxvirt ...

  9. Warsaw U Contest Petrozavo dsk Summer 2011 Training Camp, Monday, September 5, 2011

    Warsaw U Contest Petrozavo dsk Summer 2011 Training Camp, Monday, September 5, 2011 Problem A.Chocol ...

  10. JSP 标准标签库(JSTL)

    JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...