python--模块学习之xml模块
xml即可扩展标记语言,它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
本文主要学习的ElementTree是python的XML处理模块,它提供了一个轻量级的对象模型。在使用ElementTree模块时,需要import xml.etree.ElementTree的操作。ElementTree表示整个XML节点树,而Element表示节点数中的一个单独的节点。
XML示例一:使用XML读取本地的first.xml文件,并解析数据
以下是first.xml文件的内容
- <data>
- <country name="Liechtenstein">
- <rank updated="yes">2</rank>
- <year>2023</year>
- <gdppc>14110</gdppc>
- <neighbor direction="E" name="Austria"/>
- <neighbor direction="W" name="switzeriand"/>
- </country>
- <country name="Singapore">
- <rank updated="yes">5</rank>
- <year>2026</year>
- <gdppc>59900</gdppc>
- <neighbor direction="N" name="Malaysia"/>
- </country>
- <country name="Faname">
- <rank updated="yes">69</rank>
- <year>2019</year>
- <gdppc>13360</gdppc>
- <neighbor direction="W" name="Costa Rica"/>
- <neighbor direction="E" name="Colombia"/>
- </country>
- </data>
python代码实现:
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- """
- 使用XML读取本地的first.xml文件,并解析数据
- """
- from xml.etree import ElementTree as ET
- root = ET.XML(open("first.xml", "r", encoding='utf-8').read()) #读取本地的first.xml文件,解析字符串
- #通过循环读取子节点的内容
- for node in root:
- print(node.tag, node.attrib, node.find("year").text)
python实现读取first.xml文件并解析的结果:
XML示例二:通过.parse()方式打开文件,可以实现修改文件内容
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- #打开并解析文件内容
- from xml.etree import ElementTree as ET
- tree = ET.parse("first.xml")
- root = tree.getroot() #通过.getroot()获取根节点
- for node in root.iter('year'): #通过.iter()迭代找到指定的子节点
- new_year = int(node.text) + 1
- node.text = str(new_year)
- node.set('name', 'YY') #通过.set()给year节点添加一个Name属性
- #del node.attrib['name'] 通过.attrib[]可删除指定的属性
- head = root.find('gdppc') # 获取节点
- root.remove(head) # 删除节点
- #通过.write()将修改的内容从内存中写入文件
- tree.write("first.xml")
示例三:创建xml文档
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- from xml.etree import ElementTree as ET
- #创建根节点
- new_xml = ET.Element("namelist")
- #在根节点下创建子节点1
- name1 = ET.SubElement(new_xml, "name", attrib={"enrolled": "yes"})
- #在name1子节点下再创建孙节点
- age1 = ET.SubElement(name1, "age", attrib={"checked": "no"})
- sex1 = ET.SubElement(name1, "sex")
- sex1.text = ''
- #在根节点下创建子节点2
- name2 = ET.SubElement(new_xml, "name", attrib={"enrolled": "no"})
- age2 = ET.SubElement(name2, "age")
- age2.text = ''
- #生成文档对象
- et = ET.ElementTree(new_xml)
- et.write("new_xml.xml", encoding='utf-8', xml_declaration=True)
创建xml文档实现的结果:
python--模块学习之xml模块的更多相关文章
- Python常用内置模块之xml模块
xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.从结构上,很像HTML超文本标记语言.但他们被设计的目的是不同的,超文本标记语言被设计用来显示 ...
- 【python标准库模块五】Xml模块学习
Xml模块 xml本身是一种格式规范,是一种包含了数据以及数据说明的文本格式规范.在json没有兴起之前各行各业进行数据交换的时候用的就是这个.目前在金融行业也在广泛在运用. 举个简单的例子,xml是 ...
- python学习-52 XML模块
XML模块 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但是json使用起来更简单. 例如:创建一个xml文件 <data> <country name=&q ...
- python(32)——【shelve模块】【xml模块】
一. shelve模块 json和pickle模块的序列化和反序列化处理,他们有一个不足是在python 3中不能多次dump和load,shelve模块则可以规避这个问题. shelve模块是一个简 ...
- python基础学习十 logging模块详细使用【转载】
很多程序都有记录日志的需求,并且日志中包含的信息既有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,主要用于输出 ...
- python基础学习笔记——os模块
#OS模块 #os模块就是对操作系统进行操作,使用该模块必须先导入模块: import os #getcwd() 获取当前工作目录(当前工作目录默认都是当前文件所在的文件夹) result = os. ...
- Python 模块学习:re模块
今天学习了Python中有关正则表达式的知识.关于正则表达式的语法,不作过多解释,网上有许多学习的资料.这里主要介绍Python中常用的正则表达式处理函数. 方法/属性 作用 match() 决定 R ...
- Python 模块学习:os模块
一.os模块概述 Python os模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.(一语中的) 二.常用方法 1.os.name 输出字符串指示正在使用的平台 ...
- [转] Python 模块学习:os模块
一.os模块概述 Python os模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.(一语中的) 二.常用方法 1.os.name 输出字符串指示正在使用的平台 ...
随机推荐
- 9. Scala隐式转换和隐式值
9.1 隐式转换 9.1.1 提出问题 先看一个案例演示,引出隐式转换的实际需要=>指定某些数据类型的相互转化 object boke_demo01 { def main(args: Array ...
- Gitbook常用命令
npm install gitbook-cli -g gitbook ls :列出本地安装版本: gitbook current :列出当前使用版本: gitbook ls-remote :列出远程可 ...
- 『7.3 NOIP模拟赛题解』
T1 gift Description 夏川的生日就要到了.作为夏川形式上的男朋友,季堂打算给夏川买一些生日礼物. 商店里一共有种礼物.夏川每得到一种礼物,就会获得相应喜悦值Wi(每种礼物的喜 ...
- 一张图看懂SharpBarcode
通过下面的图片,可以瞬间看懂整个SharpBarcode类库的脉络.
- linux基础命令汇总
目录 linux系统结构 常用命令 切换目录命令cd 文件操作 vi和vim编辑器 重定向输出>和>> 管道 | &&命令执行控制 网络通讯命令 系统管理命令 用户和 ...
- 学习笔记之正则表达式 (Regular Expressions)
正则表达式_百度百科 http://baike.baidu.com/link?url=ybgDrN2WQQKN64_gu-diCqdeDqL8LQ-jiQ-ftzzPaNUa9CmgBRDNnyx50 ...
- JavaWeb第一天--HTML
HTML HTML简介 HTML(Hyper TextMarkupLanguage) 超文本标记语言. 超文本: 超越了文本仅仅展示信息的功能范畴,泛指:图片.有样式的文字.超链接. 标记: 标签. ...
- vue中进行窗口变化的监听
今天vue项目中用到的元素的宽度依赖与窗口的宽度,所以在进行宽度设置的时候涉及到窗口的变化,因为元素的宽度要随着窗口变化 分成几个步骤来实现这一过程 1.首先元素的宽度依赖与窗口的宽度,就需要有接受窗 ...
- IOS之NSString NSData char 相互转换
转自:http://blog.csdn.net/xialibing103/article/details/8513312 1.NSString转化为UNICODE String:(NSString*) ...
- 一步一步实现kbmmw的httpsys使用https功能
kbmmw的httpsys的功能已经实现了好长时间,但是现在各个平台都要求使用https来提供服务. 今天一步一步来说一下如何使用kbmmw 的httpsys功能支持https. 首先为了获得证书,我 ...