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. java 二维码生成

    直接上代码: 二维码生成核心类: package com.bbkj.wechat.tool; import java.awt.image.BufferedImage; import java.io.F ...

  2. LeetCode——Integer Replacement

    Question Given a positive integer n and you can do operations as follow: If n is even, replace n wit ...

  3. gdb 调试coredump文件过程:

    第一步:首先需要一个进程的coredump文件,怎么搞出coredump文件呢? 1. ps -fax|grep                 进程名称 找到进程的pid 2.gdb -p pid ...

  4. 转 : CSS Modules详解及React中实践

    https://zhuanlan.zhihu.com/p/20495964 CSS 是前端领域中进化最慢的一块.由于 ES2015/2016 的快速普及和 Babel/Webpack 等工具的迅猛发展 ...

  5. UML类图概述、设计模式

    深入浅出UML类图(http://blog.csdn.net/lovelion/article/details/7843308) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相 ...

  6. Angular Material 教程之布局篇

    Angular Material 教程之布局篇 (一) : 布局简介https://segmentfault.com/a/1190000007215707 Angular Material 教程之布局 ...

  7. 蓄水池抽样算法 Reservoir Sampling

    2018-03-05 14:06:40 问题描述:给出一个数据流,这个数据流的长度很大或者未知.并且对该数据流中数据只能访问一次.请写出一个随机选择算法,使得数据流中所有数据被选中的概率相等. 问题求 ...

  8. pahlcon:cookies设置

    非加密方式(简单,但不推荐) 步骤 1 在全局容器中加入Cookie: $di->set('cookies', function () { $cookies = new \Phalcon\Htt ...

  9. 初学Selenium遇到的那些坑

    一.遇到一个下拉选择框,可以点击继续选择: 所以click两次就可以了: 二.国际话问题 bdId.selectByIndex(index);//index位下拉框内容的下标,从0开始,  数组形式[ ...

  10. WebAPI项目 IHttpActionResult不识别解决办法

    转自:http://blog.csdn.net/nnnnnbody/article/details/16945253 使用ASP.NET Web API构造基于restful风格web service ...