导入模块:

import xml.etree.ElementTree as ET

创建xml文件:

new_xml = ET.Element("namelist")  # 创建根节点

userinfo = ET.SubElement(new_xml, "userinfo", attrib={"enrolled": "yes"})  # 给new_xml创建子节点,userinfo:节点名,attrib:属性及值
name = ET.SubElement(userinfo, "name") # 给userinfo创建子节点,name:节点名
name.text = 'name1'
age = ET.SubElement(userinfo, "age", attrib={"checked": "no"}) # 给userinfo创建子节点,age:节点名,attrib:属性及值
age.text = '23' # 给age节点添加节点内容
sex = ET.SubElement(userinfo, "sex") # 给userinfo创建子节点,sex:节点名
sex.text = '男' userinfo2 = ET.SubElement(new_xml, "userinfo", attrib={"enrolled": "no"}) # 给new_xml创建子节点,userinfo:节点名,attrib:属性及值
name = ET.SubElement(userinfo2, "name") # 给userinfo2创建子节点,name:节点名
name.text = 'name2'
age = ET.SubElement(userinfo2, "age") # 给userinfo2创建子节点,age:节点名
age.text = '24' # 给age节点添加节点内容
sex = ET.SubElement(userinfo2, "sex") # 给userinfo创建子节点,sex:节点名
sex.text = '女' userinfo3 = ET.SubElement(new_xml, "userinfo", attrib={"enrolled": "yes"}) # 给new_xml创建子节点,userinfo:节点名,attrib:属性及值
name = ET.SubElement(userinfo3, "name") # 给userinfo3创建子节点,name:节点名
name.text = 'name3'
age = ET.SubElement(userinfo3, "age") # 给userinfo3创建子节点,age:节点名
age.text = '26' # 给age节点添加节点内容 et = ET.ElementTree(new_xml) # 生成文档对象
et.write("xmltest.xml", encoding="utf-8", xml_declaration=True) # 写入xmltest.xml文件,xml_declaration指定为xml格式,文件头:<?xml version='1.0' encoding='utf-8'?> ET.dump(new_xml) # 打印生成的格式

执行结果:

读取xml文件:

tree = ET.parse('xmltest.xml')  # 打开xml文件
root = tree.getroot() # 获取根节点
# root.tag 获取根节点标签
print(root.tag) # 获取根节点标签 # namelist # 遍历xml文档
# text 获取标签内容
# attrib 获取标签属性值
for child in root:
print(child.tag, child.attrib) # 获取标签名及属性值
for i in child:
print(i.tag, i.text) # 获取标签名及标签内容 # 遍历指定节点(name)
for node in root.iter('name'):
print(node.tag, node.text)

执行结果:

修改xml内容:

tree = ET.parse("xmltest.xml")  # 打开xml文件
root = tree.getroot() # 获取根节点 # 修改,所有age值加1
for node in root.iter('age'):
new_rank = int(node.text) + 1
node.text = str(new_rank) # 修改age节点的内容
node.set("sexvalue", "M/W") # 给sex节点添加属性 tree.write("xmltest.xml")

执行结果:

删除xml节点:

tree = ET.parse('xmltest.xml')  # 打开xml文件
root = tree.getroot() # 获取根节点
# root.tag 获取根节点标签 for userinfo in root.findall('userinfo'): # root.findall 找到所有的 userinfo 节点
rank = int(userinfo.find('age').text) # 获取age的值
if rank > 25:
root.remove(userinfo) # 删除age>25的userinfo节点 tree.write('output.xml') # 删除之后的内容写入output.xml中,也可写入源文件 tree.write('xmltest.xml')

执行结果:

初识python: xml 操作的更多相关文章

  1. 【转】python XML 操作总结(创建、保存和删除,支持utf-8和gb2312)

    原文地址:http://hi.baidu.com/tbjmnvbagkfgike/item/6743ab10af43bb24f6625cc5 最近写程序需要用到xml操作,看了看python.org上 ...

  2. Python XML操作

    XML(可扩展性标记语言)是一种非常常用的文件类型,主要用于存储和传输数据.在编程中,对XML的操作也非常常见. 本文根据python库文档中的xml.etree.ElementTree类来进行介绍X ...

  3. Python导出Excel为Lua/Json/Xml实例教程(一):初识Python

    Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...

  4. python - XML文件及其操作

    xml文件也是实现不同语言或者程序之间进行数据交换的协议,它的特点是尖括号开头,尖括号结尾.使用范围就更为广泛了,tomcat resin kvm 等等,使用了大量的xml文件来进行相关配置.先来看一 ...

  5. 篇2 安卓app自动化测试-初识python调用appium

    篇2              安卓app自动化测试-初识python调用appium --lamecho辣么丑 1.1概要 大家好!我是lamecho(辣么丑),上一篇也是<安卓app自动化测 ...

  6. Python XML解析(转载)

    Python XML解析 什么是XML? XML 指可扩展标记语言(eXtensible Markup Language). 你可以通过本站学习XML教程 XML 被设计用来传输和存储数据. XML是 ...

  7. python学习之路-1 python基础操作

    本篇所涉及的内容 变量 常量 字符编码 用户交互input 格式化字符串 python的缩进规则 注释 初始模块 条件判断 循环 变量 变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中 ...

  8. Python xml 模块

    Python xml 模块 TOC 什么是xml? xml和json的区别 xml现今的应用 xml的解析方式 xml.etree.ElementTree SAX(xml.parsers.expat) ...

  9. Python XML解析之ElementTree

    参考网址: http://www.runoob.com/python/python-xml.html https://docs.python.org/2/library/xml.etree.eleme ...

  10. python大法好——Python XML解析

    Python XML解析 什么是XML? XML 被设计用来传输和存储数据. XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识. 它也是元标记语言,即定义了用于定义其他与 ...

随机推荐

  1. keepalived 高可用lvs的dr模型(vip与dip不在同一网段)

    现在rs1和rs2上面安装httpd并准备测试页 [root@rs1 ~]# yum install httpd -y [root@rs1 ~]# echo "this is r1" ...

  2. Zookeeper客户端链接

    一.zkCli.sh ./zkCli.sh -server 39.97.176.160:2182 39.97.176.160 : zookeeper服务器Ip 2182:zookeeper端口 二.Z ...

  3. gitlab 集成openldap

    Setting up LDAP sign-in If you have an LDAP directory service such as Active Directory, you can conf ...

  4. 拖动条形图设置任务关联(Project)

    <Project2016 企业项目管理实践>张会斌 董方好 编著 仅仅是知悉了四种任务关联,那只是纸上谈兵,要把这四种关联真正用到Project上才行,所以我们就要来设置任务关联了. 这是 ...

  5. CF760A Petr and a calendar 题解

    Content 输入两个数 \(m,d\),请输出 \(2017\) 年 \(m\) 月的日历[其中第一天是星期 \(d\)(如果 \(d=7\) 就是星期天)]需要印的列数. 格式见题目所述. 数据 ...

  6. AT2642 [ARC076A] Reconciled? 题解

    Content 有 \(n\) 只狗和 \(m\) 只猴,现在要把这 \(n+m\) 只动物排成一排,要求相邻两只动物不能同时是狗或者同时是猴.求排列方案总数对 \(10^9+7\) 取模后的值. 数 ...

  7. CF1199B Water Lily 题解

    Content 有一朵长在水中的莲花,其茎秆部分露出水面的高度为 \(h\).有人将它往右边拽了 \(l\) 米,使得整个茎秆部分都浸在水中.求池水的深度. 数据范围:\(1\leqslant h&l ...

  8. Git差异并列显示

    默认的git diff命令只会将文件的修改差异使用"+","-"符号标注出来,并不直观. 最理想的方式应该是使用诸如"DiffMerge"这 ...

  9. Qt5绘制仪表盘dashboard

    说明 本文演示Qt版本: Qt5.14. 本文将使用QPainter一步一步绘制仪表盘:刻度.指针.刻度值 注意: 绘制顺序,如果先绘制,则后来绘制的将会覆盖住先前绘制的. 如果需要绘制半透明, 请设 ...

  10. 【九度OJ】题目1473:二进制数 解题报告

    [九度OJ]题目1473:二进制数 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1473 题目描述: 大家都知道,数据在计算机里中存 ...