函数和常用模块【day06】:xml模块(六)
本节内容
1、简述
2、xml格式
3、xml节点操作
4、创建新的xml文件
一、简述
xml是实现不同语言或者程序之间进行数据交换的协议,跟json差不多,但是json使用起来更简单,不过,古时候,在json还没有诞生的黑暗年代,大家只能选择xml,到现在仍然有很多传统的公司,像金融行业的很多系统的接口还是xml。
二、xml格式
1、xml的格式
说明:就是通过<>节点来区别数据结构的,格式如下:
<?xml version="1.0"?>
<data>
<country name="Liechtenstein">
<rank updated="yes">2</rank>
<year>2008</year>
<gdppc>141100</gdppc>
<neighbor name="Austria" direction="E"/>
<neighbor name="Switzerland" direction="W"/>
</country>
<country name="Singapore">
<rank updated="yes">5</rank>
<year>2011</year>
<gdppc>59900</gdppc>
<neighbor name="Malaysia" direction="N"/>
</country>
<country name="Panama">
<rank updated="yes">69</rank>
<year>2011</year>
<gdppc>13600</gdppc>
<neighbor name="Costa Rica" direction="W"/>
<neighbor name="Colombia" direction="E"/>
</country>
</data>
三、xml节点操作
1、查询xml文档内容
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import xml.etree.ElementTree as ettree = et.parse("xmltest.xml")root = tree.getroot() #获取根节点print(root.tag) #打印节点名称#遍历xml文档for child in root: print(child.tag,child.attrib) #分别打印子节点名称和子节点属性 #遍历子节点下的所有节点 for i in child: print(i.tag,i.text) #打印子节点下节点的节点名和节点值 #只遍历year节点 for i in child.iter("year"): print("\t",i.tag,i.attrib,i.text)#只遍历year节点for node in root.iter("year"): print(node.tag,node.text) #打印year的节点名和节点值 |
注:
- tag是返回节点名,attrib返回节点属性,text返回节点值
- 返回根节点用getroot()方法
- 只遍历某个节点,只需要用iter(节点名)方法
2、修改xml文档内容
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import xml.etree.ElementTree as ettree = et.parse("xmltest.xml")root = tree.getroot()#修改year节点的值for node in root.iter("year"): new_year = int(node.text) + 1 #修改节点值 node.text = str(new_year) #修改后强制转换成字符串类型 node.tag = "myyear" #修改节点名 node.set("zhangqigao",'handsome') #修改节点属性tree.write("xmltest1.xml") #修改完成后,重新写入xml文件(可以是任何文件,包括原来的) |
注:可以修改xml文件中的任何内容,包括本身的节点名,修改后一定要有写入xml文件的操作。
3、删除node节点
|
1
2
3
4
5
6
7
8
9
10
11
12
|
import xml.etree.ElementTree as ettree = et.parse("xmltest.xml")root = tree.getroot()#删除for country in root.findall("country"): #找到第一层子节点 rank = int(country.find("rank").text) #找到子节点下的'rank'节点的节点值 if rank > 50: root.remove(country) #删除子节点tree.write("xmltest1.xml") #重新写入xml文件 |
注:
- findall()从根节点只能根据第一层的子节点名查找,并且返回第一层子节点的内存地址
- find从根节点查找第一层子节点名,返回第一层子节点下的所有节点的内存地址
- 删除子节点用remove()方法
- 删除以后,一定要做重新写入新的xml文件操作
四、创建新的xml文件
1、手动创建xml文件
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
import xml.etree.ElementTree as etnew_xml = et.Element("namelist") #创建根节点#创建第一层子节点,后面参数依次是:父节点,子节点,子节点属性name = et.SubElement(new_xml,"name",attrib={"zhangqigao":"handsome"})#创建第二层子节点age = et.SubElement(name,"age",attrib={"check":"yes"})#设置第二层节点值age.text = '22'sex = et.SubElement(name,"sex")sex.text = "man"#创建另外一个第一层子节点name2 = et.SubElement(new_xml,"name",attrib={"zhangqigao":"haoshuai"})#创建其第二层子节点age = et.SubElement(name2,"age")age.text = '19'ET = et.ElementTree(new_xml) #生成新的xml文档ET.write("test.xml",encoding="utf-8",xml_declaration=True) #在新xml文件的开头自动添加:<?xml version='1.0' encoding='utf-8'?>et.dump(new_xml) #在屏幕上打印生成的格式 |
注:et.dump(new_xml)这个有什么作用呢?当你需要直接把字符串传过去,不需要串文件时,用这个就ok了。
函数和常用模块【day06】:xml模块(六)的更多相关文章
- Python常用内置模块之xml模块
xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.从结构上,很像HTML超文本标记语言.但他们被设计的目的是不同的,超文本标记语言被设计用来显示 ...
- python常用模块之xml模块
python常用模块之xml模块 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,在json还没诞生的年代,大家都是使用xml,目前很多传统公司的系 ...
- python16_day06【类、RE模块、subprocess模块、xml模块、shelve模块】
一.shelve模块 import shelve # 基于pickle模块, d = shelve.open('shelve_test') class Test(object): def __init ...
- python 之 random 模块、 shutil 模块、shelve模块、 xml模块
6.12 random 模块 print(random.random()) (0,1)----float 大于0且小于1之间的小数 print(random.randint(1,3)) [1,3] 大 ...
- logging模块、shutil模块、subprocess模块、xml模块
logging模块 shutil模块 subprocess模块 xml模块 logging模块 函数式简单配置 import logging logging.debug('debug message' ...
- python全栈开发-hashlib模块(数据加密)、suprocess模块、xml模块
一.hashlib模块 1.什么叫hash:hash是一种算法(3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 ...
- day5模块学习--XML模块
XML文件处理 XML文件处理,有好几种方式,这里介绍一下xml.etree.ElementTree as ET. 注意:xml.etree.ElementTree模块在应对恶意结构数据时显得并不安全 ...
- 模块讲解----XML模块
XML实现不同语言或者程序之间进行数据交换的协议XML文件格式如下: 1.浏览器返回的字符串格式类型有: a.HTML b.Json c.XML 2.XML格式如下: <data> #表示 ...
- 函数和常用模块【day06】:shelve模块(五)
本节内容 1.简述 2.shelve概念 3.shelve模块使用 4.总结 一.简述 之前我们说不管是json也好,还是pickle也好,在python3中只能dump一次和load一次,不能dum ...
- Python之路(第十六篇)xml模块、datetime模块
一.xml模块 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单, xml比较早,早期许多软件都是用xml,至今很多传统公司如金融行业的很多系统的接口还主要 ...
随机推荐
- github链接地址及
http://www.github.com/houyanan1/test.git git 在本地创建分支,并且已经在该分支中开发了一段时间,那么commit到本地后,代码会做一个提交快照,在本地分支保 ...
- 第二个spring冲刺第10天(及第二阶段总结)
第二阶段算是结束了,第二阶段,我们实现了基本的功能,这是软件的开始页面,点击便会进入学习画面,目前学习画面还有待改善 燃尽图3 眨眼就完结了第二阶段的冲刺了,大致整体结构已经完成. 第二阶段总体是 ...
- Classification Truth Table
在机器学习中对于分类结果的描述,一般有四种:true positive, true negative, false positive 和 false negative. Precision, Reca ...
- [转帖] Win10 多桌面转换的快捷键
http://down.52pk.com/zhishi/52202.shtml win10系统中用户除了可以切换任务之外,还可以进行多桌面切换,就像是切换了电脑屏幕一样,可能网友们还都不知道win10 ...
- FuelPHP 系列(五) ------ Security 防御
项目中难免会有 form 提交,对用户输入的所有信息进行过滤,可以避免 XSS 攻击,防止 SQL 注入. 一.设置配置信息 首先在 config.php 文件中,对 security 相关信息进行设 ...
- Jquery 组 tbale表格筛选
<!DOCTYPE html><html lang="zh-cn"><head> <meta charset="utf-8&qu ...
- WebAssembly是什么?
现在的JavaScript代码要进行性能优化,通常使用一些常规手段,如:延迟执行.预处理.setTimeout等异步方式避免处理主线程,高大上一点的会使用WebWorker.即使对于WebWorker ...
- Linux学习之/etc/init.d/目录和rc.local脚本
init.d目录中包含很多系统服务的启动和停止脚本,比较常用的就是网络服务,当你修改了网络配置时,可以自行 sudo /etc/init.d/networking restart 命令来重启网络服务 ...
- TensorFlow分布式计算机制解读:以数据并行为重
Tensorflow 是一个为数值计算(最常见的是训练神经网络)设计的流行开源库.在这个框架中,计算流程通过数据流程图(data flow graph)设计,这为更改操作结构与安置提供了很大灵活性.T ...
- 自学Zabbix11.5 Zabbix SNMP监控实例
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix11.5 Zabbix SNMP监控实例-监控网络设备内存使用情况 1. zabb ...