python XML ElementTree的增删改查
import xml.etree.ElementTree as ET """
ElementTree.write() 将构建的XML文档写入(更新)文件。
Element.set(key, value) 添加和修改属性
Element.text = '' 直接改变字段内容
Element.remove(Element) 删除Element节点
Element.append(Element) 为当前的Elment对象添加子对象
ET.SubElement(Element,tag)创建子节点
""" # 增加自动缩进换行
def indent(elem, level=0):
i = "\n" + level*" "
if len(elem):
if not elem.text or not elem.text.strip():
elem.text = i + " "
if not elem.tail or not elem.tail.strip():
elem.tail = i
for elem in elem:
indent(elem, level+1)
if not elem.tail or not elem.tail.strip():
elem.tail = i
else:
if level and (not elem.tail or not elem.tail.strip()):
elem.tail = i #------------新增XML---------- #创建根节点
a = ET.Element("student")
#创建子节点,并添加属性
b = ET.SubElement(a,"name")
b.attrib = {"NO.":""}
#添加数据
b.text = "张三"
#创建elementtree对象,写文件
indent(a,0)
tree = ET.ElementTree(a)
tree.write("writeXml.xml",encoding="utf-8") #----------编辑XML--------
# 读取待修改文件
updateTree = ET.parse("writeXml.xml")
root = updateTree.getroot() # --新增-- # 创建新节点并添加为root的子节点
newnode = ET.Element("name")
newnode.attrib = {"NO.":""}
newnode.text = "张三水"
root.append(newnode) #---修改--- sub1 = root.findall("name")[2]
# --修改节点的属性
sub1.set("NO.","")
# --修改节点内文本
sub1.text="陈真" #----删除--- #--删除标签内文本
sub1.text = ""
#--删除标签的属性
del sub1.attrib["NO."]
#--删除一个节点
root.remove(sub1) # 写回原文件
indent(root,0)
updateTree.write("writeXml.xml",encoding="utf-8", xml_declaration=True)
XML操作封装
def change_node_properties(nodelist, kv_map, is_delete=False):
'''修改/增加 /删除 节点的属性及属性值
nodelist: 节点列表
kv_map:属性及属性值map'''
for node in nodelist:
for key in kv_map:
if is_delete:
if key in node.attrib:
del node.attrib[key]
else:
node.set(key, kv_map.get(key)) def change_node_text(nodelist, text, is_add=False, is_delete=False):
'''改变/增加/删除一个节点的文本内容
nodelist:节点列表
text : 更新后的文本'''
for node in nodelist:
if is_add:
node.text += text
elif is_delete:
node.text = ""
else:
node.text = text def create_childnode(node,tag, property_map, content):
'''新造一个子节点
node:节点
tag:子节点标签
property_map:属性及属性值map
content: 节点闭合标签里的文本内容
'''
element = ET.Element(tag, property_map)
element.text = content
node.append(element) def del_node_by_tagkeyvalue(node, tag, kv_map):
'''通过属性及属性值定位一个节点,并删除之
node: 父节点
tag:子节点标签
kv_map: 属性及属性值列表'''
for child in node:
if child.tag == tag and child.attrib==kv_map:
node.remove(child)
python XML ElementTree的增删改查的更多相关文章
- java对xml文件做增删改查------摘录
java对xml文件做增删改查 package com.wss; import java.io.File;import java.util.ArrayList;import java.util.Lis ...
- python操作mysql数据库增删改查的dbutils实例
python操作mysql数据库增删改查的dbutils实例 # 数据库配置文件 # cat gconf.py #encoding=utf-8 import json # json里面的字典不能用单引 ...
- 使用dom4j对xml文件进行增删改查
1.使用dom4j技术对dom_demo.xml进行增删改查 首选要下载dom4j的jar包 在官网上找不到,网上搜索了一下在这个链接:http://sourceforge.net/projects/ ...
- python学习(list增删改查、及常用方法)
1.Python多条件判断: 多条件判断if: passelse: pass循环 while for i = 0 while i > 1: print('hello') else: print( ...
- XML(五)dom4j增删改查
book2.xml <? xml version="1.0" encoding="UTF-8"?> <书架> <书> < ...
- Python之注册表增删改查(干货)
在Windows平台下,对注册表的增删改查的需求比较多,微软提供了很多用于访问,修改注册表等的API,我们可以使用诸如bat,或者C++等各种方式去访问修改注册表.无所不能的python下如何完成这些 ...
- Python实现mysql数据库增删改查
利用python操作mysql数据库用法简单,环境配置容易,本文将实现对库增.删.改.查的简易封装! 1. 环境配置 安装第三方包 ,导入模块 mysql.connector pip inst ...
- DAY4(python)打印字符串以及增删改查
用while循环打印字符串 #if i in s: # print ( i ) s='nanfjkhndaol' index = 0 while 1 : print (s[index]) index+ ...
- 2018.8.1 python中字典的增删改查及其它操作
一.字典的简单介绍 1.dict 用{}来表示 键值对数据 {key:value} 唯一性 2.键都必须是可哈希,不可变的数据类型就可以当做字典中的键 值没有任何限制 ...
随机推荐
- DispatcherServlet(2)_HandlerMapping
HandlerMapping_xmind SpringMVC默认提供的HandlerMapping BeanNameUrlHandlerMapping SimpleUrlHandlerMapping ...
- [题解] LuoguP4381 [IOI2008]Island
LuoguP4381 [IOI2008]Island Description 一句话题意:给一个基环树森林,求每棵基环树的直径长度的和(基环树的直径定义与树类似,即基环树上一条最长的简单路径),节点总 ...
- 51Nod1085 0-1背包(一维和二维数组实现)
背包是典型的动态规划问题,关于背包问题的详解,推荐博客:点击打开链接(这篇博客有点错误,代码for循环里错了,不过讲解 的很详细) 题目如下: 在N件物品取出若干件放在容量为W的背包里,每件物品的体积 ...
- 关于SOA的架构设计案例分析
SOA体系架构及相关技术,主要应用在企业应用集成领域,它能够以服务的方式共享和复用企业现有应用资产,保护用户IT投资,并能够以服务的方式构建新的业务流程,对企业流程进行灵活重构和优化,增强业务的敏捷性 ...
- Day 8:方法上自定义泛型、类上、接口上、泛型的上下限
泛型 泛型是jdk1.5使用的新特性 泛型的好处: 1. 将运行时的异常提前至了编译时 2. 避免了无谓的强制类型转换 泛型在集合中的常见应用: ArrayList<Strin ...
- Sequence Models Week 3 Trigger word detection
Trigger Word Detection Welcome to the final programming assignment of this specialization! In this w ...
- HDU 5311:Hidden String
Hidden String Accepts: 437 Submissions: 2174 Time Limit: 2000/1000 MS (Java/Others) Memory Limit ...
- Tensorflow学习教程------tensorboard网络运行和可视化
tensorboard可以将训练过程中的一些参数可视化,比如我们最关注的loss值和accuracy值,简单来说就是把这些值的变化记录在日志里,然后将日志里的这些数据可视化. 首先运行训练代码 #co ...
- python类(4)——自己造第一个轮子
先做简单版本,再一步步增加功能 1.简单目的:要实现这样一个功能,能够连接服务器,登录账号,查询账号委托信息,如果有委托信息,撤销委托. 属性(不同账户之间差别):账户,密码 方法(不同账户之间都要用 ...
- delphi 串口的打开与关闭
Delphi 打开串口与关闭串口 procedure TForm1.btn1Click(Sender: TObject); begin cm1.CommName:=cbb1.Text; cm1.Bau ...