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. Kafka架构

    一.Kafka介绍 Kafka是Linkin在2010年开源的分布式发布订阅消息系统,Kafka是高吞吐量的消息订阅系统. 二.Kafka结构 Kafka由三部分构成,producer.broker. ...

  2. RN中有两种方式使用全局变量

    1.通过导入导出文件的方式 新建constants.js文件 const object = { website:'http://www.hao123.com', name:'好123', }; exp ...

  3. uboot下如何查看内存里的数据

    答:使用md工具 md.b $address $count (从地址$address处显示$count个字节的数据,b=byte,8位) md.w $address $count (从地址$addre ...

  4. webform button

    https://www.codeproject.com/Questions/412553/differences-between-onClick-and-onClientClick OnClick w ...

  5. 素数分布 - nefu 117

    素数个数的位数 - nefu 117 普及一个公式: 位数公式:要求一个数x的位数,用公式:lg(x)+1 素数分布:n/ln(n) 所以直接求解n/ln(n)的位数就可以了 代码如下: #inclu ...

  6. webjars-jquery的引用

    什么是WebJars WebJars以jar包的形式来使用前端的各种框架.组件,如jquery.bootstrap WebJars将客户端(浏览器)资源(JavaScript,Css等)打成jar包文 ...

  7. RabbitMQ 的路由模式 Topic模式

    模型 生产者 package cn.wh; import java.io.IOException; import java.util.concurrent.TimeoutException; impo ...

  8. RSA非对称加密算法

    基本定义: RSA公开密钥密码体制.所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制.在公开密钥密码体制中,加密密钥(即公开密钥 ...

  9. sublime的一些插件

    新安装的sublime缺少一些插件… 1.文件路径没有提示 ctrl+shift+p → install → autofilename 2..html后缀的文件中,使用快捷键!不能自动出现内容 ctr ...

  10. 新浪云连接数据库php

    一般数据库连接$con = mysql_connect("localhost", "root", ""); 而新浪云共享数据库 <?p ...