使用python操作XML增删改查
使用python操作XML增删改查
什么是XML?
- XML 指可扩展标记语言(EXtensible Markup Language)
- XML 是一种标记语言,很类似 HTML
- XML 的设计宗旨是传输数据,而非显示数据
- XML 标签没有被预定义。您需要自行定义标签。
- XML 被设计为具有自我描述性。
- XML 是 W3C 的推荐标准
参考文献
导入模块
import xml.etree.ElementTree as ET
读取解析XML
可以从xml文件、字符串中解析
新建一个xml文件
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student>
<name>张三</name>
<age>18</age>
<score>89</score>
</student>
<student>
<name>李四</name>
<age>19</age>
<score>81</score>
</student>
<student>
<name>王五</name>
<age>17</age>
<score>92</score>
</student>
</students>
从xml文件中读取,使用getroot()获取根节点,得到的是一个Element对象
tree = ET.parse('students.xml')
root = tree.getroot()
从字符串变量中读取,返回的是Element对象
root = ET.fromstring(country_data_as_string)
访问XML
每个Element都有以下属性
#tag = element.text #访问Element标签
#attrib = element.attrib #访问Element属性
#text = element.text #访问Element文本
for element in root.findall('student'):
tag = element.tag #访问Element标签
attrib = element.attrib #访问Element属性
text = element.find('name').text #访问Element文本
print(tag, attrib, text)
print(root[0][0].text) #子节点是嵌套的,我们可以通关索引访问特定的子节点
查找元素
Element 提供了一些方法来帮助我们对他的子节点进行遍历
1、Element.iter()
for student in root.iter('student'):
print student[0].text
out:
张三
李四
王五
2、Element.findall()
for element in root.findall('student'):
name = element.find('name').text
age = element.find('age').text
score = element.find('score').text
print name,age,score
out:
张三 18 89
李四 19 81
王五 17 92
修改XML
- ElementTree.write()将构建的XML文档写入文件。
- Element.text = '' 直接改变字段内容
- Element.append(Element) 为当前的Elment对象添加子对象
- Element.remove(Element) 删除Element节点
- Element.set(key, value) 添加和修改属性
- ElementTree.write('filename.xml') 写出(更新)XMl文件
创建XML
- ElementTree.Element() 构建一个节点
- ElementTree.SubElement(Element,tag) 构建一个子节点
a = ET.Element('a')
b = ET.SubElement(a, 'b')
c = ET.SubElement(a, 'c')
print ET.dump(a)
out:
<a><b /><c /></a>
总结
最近写东西需要都输出xml,所以学习了XML以及XML在python的使用。更多内容可以看官方文档。
使用python操作XML增删改查的更多相关文章
- 洗礼灵魂,修炼python(91)-- 知识拾遗篇 —— pymysql模块之python操作mysql增删改查
首先你得学会基本的mysql操作语句:mysql学习 其次,python要想操作mysql,靠python的内置模块是不行的,而如果通过os模块调用cmd命令虽然原理上是可以的,但是还是不太方便,那么 ...
- Linq To Xml操作XML增删改查
对XML文件的操作在平时项目中经常要运用到,比如用于存放一些配置相关的内容:本文将简单运用Linq TO Xml对XML进行操作,主要讲解对XML的创建.加载.增加.查询.修改以及删除:重点在于类XD ...
- 4.Linq To Xml操作XML增删改查
转自https://www.cnblogs.com/wujy/p/3366812.html 对XML文件的操作在平时项目中经常要运用到,比如用于存放一些配置相关的内容:本文将简单运用Linq TO X ...
- c#操作xml增删改查
1.首先新建一个xml文件(Root是我写上的) 2. 3.直接上代码,更直观 (1)初始化xml /// <summary> /// 初始化xml /// </summary> ...
- Python列表的增删改查排嵌套特殊输出格式
Python列表的增删改查排嵌套特殊输出格式 一.列表的样子: a = ['q' , 'w' , 'e ', 'r','t'] a为列表名,[ ]为列表内容,' '为列表内的元素,'q'为a[0] 二 ...
- js操作indexedDB增删改查示例
js操作indexedDB增删改查示例 if ('indexedDB' in window) { // 如果数据库不存在则创建,如果存在但是version更大,会自动升级不会复制原来的版本 var r ...
- MySQL数据分析(16)— 数据操作之增删改查
前面我们说学习MySQL要从三个层面,四大逻辑来学,三个层面就是库层面,表层面和数据层面对吧,数据库里放数据表,表里放数据是吧,大家可以回忆PPT中jacky的这图,我们已经学完了库层面和表层面,从本 ...
- Redis简单的数据操作(增删改查)
#Redis简单的数据操作(增删改查): 字符串类型 string 1. 存储: set key value 127.0.0.1:6379> set username zhangsan OK 2 ...
- [原创]Linq to xml增删改查Linq 入门篇:分分钟带你遨游Linq to xml的世界
本文原始作者博客 http://www.cnblogs.com/toutou Linq 入门篇(一):分分钟带你遨游linq to xml的世界 本文原创来自博客园 请叫我头头哥的博客, 请尊重版权, ...
随机推荐
- 使用cAdvisor+Influxdb+Grafana监控系统
今天准备开始研究研究当前非常流行的Grafana+Influxdb监控系统,两者都是非常轻量级的应用但是功能却异常强大,可以说Grafana在作图显示方面真的毫不逊色与Cacti. 组件介绍 cA ...
- js 操作本地sqlite
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...
- 北上广等一线城市IT岗位已接近饱和?
IT行业的技术者,时常被我们戏称为「IT民工」,虽然行业内巨大的人才需求和相对容易得到的高薪在源源不断的吸引各路人马加入,但它依旧在全球最缺人的十大行业中位居榜首. 我身边的朋友大都问过我这样一个疑问 ...
- python网络-TFTP客户端开发(25)
一. TFTP协议介绍 TFTP(Trivial File Transfer Protocol,简单文件传输协议) 是TCP/IP协议族中的一个用来在客户端与服务器之间进行简单文件传输的协议 特点: ...
- Python内置函数(46)——oct
英文文档: oct(x) Convert an integer number to an octal string. The result is a valid Python expression. ...
- java多线程(4)---volatile关键字
volatile关键字 一旦一个共享变量(类的成员变量.类的静态成员变量)被volatile修饰之后,那么就具备了两层语义: 1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的 ...
- 再见了Server对象,拥抱IHostingEnvironment服务对象(.net core)
一.绝对路径 1.获取应用程序运行当前目录Directory.GetCurrentDirectory(). System.IO命名空间中存在Directory类,提供了获取应用程序运行当前目录的静态方 ...
- 在.NET Core console application中使用User Secrets(用户机密)
微软很坑地只在Microsoft.NET.Sdk.Web中提供了VS项目右键菜单的"管理用户机密"/"Manage User Secrets"菜单项,在使用Mi ...
- 【Java基础】【07面向对象-构造方法&静态static】
07.01_面向对象(构造方法Constructor概述和格式)(掌握) A:构造方法概述和作用 给对象的数据(属性)进行初始化 B:构造方法格式特点 a:方法名与类名相同(大小也要与类名一致) b: ...
- 5分钟入门git模式开发
本文由云+社区发表 作者:唐维黎 导语 基于gui工具TortoiseGit让你快速进入git开发模式. 目前项目已逐步从svn移步到git开发模式,其中也针对git统一协议了适合git的开发规范, ...