Python3学习之路~5.9 xml处理模块
xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,以前在json还没诞生的时候,大家只能选择用xml,至今很多传统公司如金融行业的很多系统的接口还主要是xml。
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协议在各个语言里的都是支持的,在python中可以用以下模块操作xml
import xml.etree.ElementTree as ET tree = ET.parse('xmltest.xml')
root = tree.getroot()
print(root.tag) # data 根标签 # 遍历xml文档
for child in root:
print(child.tag,child.attrib)
for i in child:
print(i.tag,i.text) # 只遍历year 节点
for node in root.iter('year'):
print(node.tag,node.text) # 修改
for node in root.iter('year'):
new_year=int(node.text)+1 #加1
node.text=str(new_year)
node.set("updated","yes") #加属性
tree.write('xmltest.xml') # 删除node
for country in root.findall('country'):
rank = int(country.find('rank').text)
if rank>50:
root.remove(country)
tree.write('output.xml')
xml-遍历 修改 删除
自己创建xml文档
import xml.etree.ElementTree as ET new_xml = ET.Element("infolist") #根节点 personinfo = ET.SubElement(new_xml,"personinfo",attrib={"enrolled":"yes"})
name = ET.SubElement(personinfo,'name')
name.text = 'Alice'
age = ET.SubElement(personinfo,'age',attrib={"check":"no"})
age.text = ''
sex = ET.SubElement(personinfo,'sex')
sex.text = 'F' personinfo2 = ET.SubElement(new_xml,"personinfo",attrib={"enrolled":"yes"})
name = ET.SubElement(personinfo2,'name')
name.text = 'Bob'
age = ET.SubElement(personinfo2,'age',attrib={"check":"no"})
age.text = ''
sex = ET.SubElement(personinfo2,'sex')
sex.text = 'M' et = ET.ElementTree(new_xml) # 生成文档对象
et.write("test.xml",encoding='UTF-8',xml_declaration=True) ET.dump(new_xml) # 打印生成的格式
xml-创建
Python3学习之路~5.9 xml处理模块的更多相关文章
- Python3学习之路~5.7 Json & pickle 模块
用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 Json模块提供了四个功能:dumps. ...
- Python3学习之路~7.4 动态导入模块
动态导入模块就是只知道str类型的模块名字符串,通过这个字符串导入模块. 准备: 首先创建一个模块目录lib,然后在目录内创建一个模块 aa.py: # aa.pyclass C: def __ini ...
- Python3学习之路~5.2 time & datetime模块
time模块 时间相关的操作,时间有三种表示方式: 时间戳 1970年1月1日之后的秒,即:time.time() 格式化的字符串 2014-11-11 11:11, ...
- Python3学习之路~0 目录
目录 Python3学习之路~2.1 列表.元组操作 Python3学习之路~2.2 简单的购物车程序 Python3学习之路~2.3 字符串操作 Python3学习之路~2.4 字典操作 Pytho ...
- Python3学习之路~8.5 SocketServer实现多并发
前面几节我们写的socket都只能实现服务端与一个客户端通信,并不能实现服务端与多客户端同时通信.接下来我们就来学习一下如何实现服务端同时与多个客户端通信,即并发. Socket Server soc ...
- Python3学习之路~9.4 队列、生产者消费者模型
一 队列queue 当必须在多个线程之间安全地交换信息时,队列在线程编程中特别有用. 队列的作用:1.解耦,使程序直接实现松耦合 2.提高处理效率 列表与队列都是有顺序的,但是他们之间有一个很大的区别 ...
- Python3学习之路
python基础知识点 1.python基础知识点汇总 2.python常用数据类型 3.python之列表 4.python之字符串 5.python常用数据运算符 6.python之字典 7.py ...
- Python3学习之路~9.1 paramiko模块:实现ssh执行命令以及传输文件
我们一般使用linux的时候,都是在Windows上安装一个ssh客户端连接上去.那么从一台linux如何连接到另一条linux呢?使用ssh命令即可,因为每台linux机器自己都有一个ssh客户端. ...
- Python3学习之路~8.6 开发一个支持多用户在线的FTP程序-代码实现
作业: 开发一个支持多用户在线的FTP程序 要求: 用户加密认证 允许同时多用户登录 每个用户有自己的家目录 ,且只能访问自己的家目录 对用户进行磁盘配额,每个用户的可用空间不同 允许用户在ftp s ...
随机推荐
- Delphi如何处理在进行大量循环时,导致的应用程序没有响应的情况
一般用在比较费时的循环中,往往导致应用程序没有响应,此时在比较费时的程序体中加入Application.ProcessMessages即可解决,该语句的作用是检查并先处理消息队列中的其他消息. 例如, ...
- amqp笔记
1.exchange message的生产者可以将消息发送给exchange,然后由exchange路由到不同的queue中. exchange有4种类型: direct exchange:msg只会 ...
- opcache分享
opcache的技术分享ppt,独家唯一经过自己实验的分享 https://pan.baidu.com/s/1-73-QHOSeet7tcR81gto6Q
- Android Studio打包程序时出现transformClassesWithDexForRelease错误
百度半天.没找到直接原因..国外网站上有写这个错误的..国内的真心没找到..英语水平有太低..实在没看懂怎么搞.. 后来发现clean项目的时候是提示如下错误: Information:Gradle ...
- 01Spark的TopN问题
和hadoop的目的一样,给你数据,然后取TopN.数据如下: 取出数据在排名前十的数据. 代码如下: package com.test.book; import java.util.ArrayLis ...
- LiDAR、LAS、LAS Dataset与点云
LiDAR Light Detection And Ranging,激光探测及测距,是一种光学遥感技术,使用激光对地球表面的密集采样,产生高精度X.Y.Z测量值. 激光雷达系统的主要硬件组成部分包括一 ...
- TIJ -- 吐司BlockingQueue
1. 吐司BlockingQueue 考虑下面这个使用BlockingQueue的示例.有一台机器具有三个任务:一个制作吐司,一个给吐司抹黄油,另一个在抹过黄油的吐司上吐果酱.我们可以通过各个处理过程 ...
- [2]朝花夕拾-JAVA注解、PHP注解?
一.Java注解概述 注解,也被称为元数据,为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后某个时刻非常方便地使用这些数据. 注解在一定程度上是把元数据与源代码文件结合在一起,而不是保存 ...
- modified: xxx(modified content, untracked content)
当运行git status的时候提示如下: modified: xxx(modified content, untracked content) 我们会很本能的直接执行 add .commit .pu ...
- Tomcat启动报错:This file is needed to run this program
Tomcat版本为 8.5.29. 1.情景 kill调用tomcat进程后,重启tomcat报如下错误: Cannot find /usr/local/apache-tomcat-/bin/setc ...