python学习(二) ElementTree解析、读写、创建xml文件
python学习(二) 读写xml文件
1.xml格式
将其存储为sample.xml
Tag:使用<>包围的部分
Element:被Tag包围的部分,例如22中的22
Attribute:在Tag中可能存在的name/value对,如'name':'Blue'
2.解析XML
以下都是使用ElementTree处理XML
from xml.etree import ElementTree as ET
(1)ElementTree中类对象
xml是一种层级化的数据结构,可以使用树状结构表示
ElementTree:表示整个xml层级结构
Element:表示树形结构中的父节点
SubElement:表示树形结构中的所有子节点,有些节点既可以是父节点,也可以是子节点
例如:上图中.......部分
(2)读xml文件数据
读入根节点方法(一)
# tree就是一个ElementTree对象
tree = ET.parse(sample.xml)
#root是根节点即上图中的
root = tree.getroot()
读入根节点方法(二)
data = open("sample.xml").read()
root = ET.fromstring(data)
(3)解析xml文件数据
ElementTree中类对象的值
tag:对应xml文件Tag部分,以字符串结构存储,例如'lab','person'
attrib:对应xml文件Attribute部分,以字典结构存储,例如{'name':'Blue'}
text:对应xml文件Elment部分,以字符串结构存储,例如22中'22'
解析xml文件
#使用for...in...遍历数据
from xml.etree import ElementTree as ET
tree = ET.parse('G:/xml/sample.xml')
#获取根节点
root = tree.getroot()
for person in root:
print(person.tag, person.attrib)
for data in person:
print(data.tag, data.text)
输出:
/>>>person {'name': 'Blue'}
/>>>age 22
/>>>gender male
/>>>person {'name': 'Yellow'}
/>>>age 20
/>>>gender female
3.创建xml文件
from xml.etree import ElementTree as ET
#首先创建根节点
root = ET.Element('lab')
#添加子节点SubElement(父节点Element对象, Tag字符串格式, Attribute字典格式)
person1 = ET.SubElement(root, 'person', {'name':'Blue'})
#添加子节点
age1 = ET.SubElement(person1, 'age')
#添加text,即22,字符串格式
age1.text = '22'
gender1 = ET.SubElement(person1, 'gender')
gender1.text = 'male'
person2 = ET.SubElement(root, 'person', {'name':'Yellow'})
age2 = ET.SubElement(person2, 'age')
age2.text = '20'
gender2 = ET.SubElement(person2, 'gender')
gender2.text = 'female'
#将根目录转化为xml树状结构(即ElementTree对象)
tree = ET.ElementTree(root)
#在终端显示整个xml内容
ET.dump(root)
#写入xml文件
tree.write('G:/pythonStudy/xml/sample.xml', encoding="utf-8", xml_declaration=True)
4.向xml文件添加内容
#可以使用append方法添加子节点
tree = ET.parse('G:/pythonStudy/xml/sample.xml')
root = tree.getroot()
#创建新的子节点
person3 = ET.Element('person', {'name':'Brown'})
age3 = ET.SubElement(person3, 'age')
age3.text = '20'
gender3 = ET.SubElement(person3, 'gender')
gender3.text = 'male'
#向根节点添加新的子节点
root.append(person3)
#写入
tree.write('G:/pythonStudy/xml/sample.xml', encoding="utf-8", xml_declaration=True)
5.修改xml文件中的内容
tree = ET.parse('G:/pythonStudy/xml/sample.xml')
root = tree.getroot()
#查找root根节点下面的所有Tag为‘person’的节点
person = root.findall('person')
#删除第一个person子节点
root.remove(person[0])
#新增或修改attitude
person[1].set('name', 'White')
#新增子节点
root.append(childElement)
#修改text直接访问即可
person[2].text = '25'
附本文的创建例程和VOC标签格式xml文件的解析和添加标签例程
https://github.com/A-mockingbird/Practice
python学习(二) ElementTree解析、读写、创建xml文件相关推荐
- elementTree解析并修改xml文件实例
可以查看官方文档,里面给的内容给得挺详尽,下面是我自己总结的一些常用的封装函数 Element.findall('tag'):仅查找具有标记的元素,这些元素是当前元素的直接子元素. Element.f ...
- IDEA创建xml文件
今天在用IDEA写项目的时候发现,创建xml文件只能通过File手动输入去创建,但在我看的一个学习视频上可以直接创建xml文件,好奇之下研究了一下,作此篇,希望能对需要的朋友有所帮助. 废话就不多说了 ...
- XML02:创建XML文件
一.用Notepad++创建XML文件 百度notepad++,下载安装即可 1.创建一个example.xml 2.菜单"编码"|以UTF-8格式编码 3.编写XML内容 < ...
- python读xml文件生成.h头文件_Python创建xml文件示例
Python创建xml文件示例 这里有新鲜出炉的 Python 入门,程序狗速度看过来! Python 编程语言 Python 是一种面向对象.解释型计算机程序设计语言,由 Guido van Ros ...
- VC++ MSXML创建XML文件以及对XML文档解析
VC++ MSXML创建XML文件以及对XML文档解析 转自http://www.newxing.com/Tech/Program/Cpp/703.html // XmlCreationDemo.cp ...
- Dom4j解析Xml文件,Dom4j创建Xml文件
Dom4j解析Xml文件,Dom4j创建Xml文件 >>>>>>>>>>>>>>>>>>&g ...
- Android -- 创建XML文件对象及其序列化, pull解析XML文件
1. 创建XML文件对象及其序列化 示例代码:(模拟以xml格式备份短信到SD卡) SmsInfo.java, bean对象 /*** 短信的业务bean* @author Administrator ...
- python记录(4)- lxml模块创建xml文件
因为要比赛制作voc数据集,然后给的数据集label是一个.txt文件,然后就需要将这个txt文件变为xml文件.对这方面一点也不懂,在此记录一下用lxml模块中的 etree创建xml文件.这只是一 ...
- Python学习二:词典基础详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...
最新文章
- C++简单使用Jsoncpp来读取写入json文件
- 奇奇怪怪的冒泡排序 TOJ 2014: Scramble Sort
- 做数据科学领域的「召唤师」,组织一场人人可参与的数据科学比赛
- 圈子 | 大数据分析汽车O2O的机会
- Linxu嵌入式汇编语言
- C++面向接口编程和C++多态
- cudaMemcpy2D介绍
- OpenCV Mat遍历的方法
- Random随机数相关工具类
- 密码学专题 OpenSSL标准转换指令
- simplexml php,PHP 使用 SimpleXML 遇到冒号「:」的解法
- android 销毁按钮,Android实现所有Activity全部销毁
- Dubbo(RPC原理、Dubbo架构负载均衡配置方式)(3)
- Vue.js 判断对象属性是否存,不存在添加
- Ubuntu下替换软件列表
- 威纶通触摸屏制作自定义弹出窗口的具体方法(3种)
- ftp下载工具,6款能够满足所有需求的ftp下载工具
- 简述python的安装过程_安装Python-3.5.2过程中常见的几种错误
- Linux中的PS1变量
- 《PUBG》大动作封锁3百万玩家 作弊问题严重
热门文章
- 1001 Pearls of Teachers' Wisdom by Erin Gruwell
- Arduino米思齐Mixly---声音检测控制灯
- 测试用例设计--因果图
- 小鱼授权系统源码_无加密
- 渗透测试技术分享——nginx日志配置
- 马斯克宣布将卸任推特CEO:转战技术岗位 ;王坚正式回归阿里云;科大讯飞否认星火大模型套壳ChatGPT|极客头条...
- 没有签订书面买卖合同怎么维权
- [资料备份] 高效类库汇总【转】
- Qt-网易云音乐界面实现-1 窗口隐藏拖拽移动,自定义标题栏
- 关于修改了注册表路径桌面刷新如何改回的问题(亲历)