导入模块:

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. 【Linux】【Services】【Project】Haproxy Keepalived Postfix实现邮件网关Cluster

    1. 简介: 1.1. 背景:公司使用exchange服务器作为邮件服务器,但是使用Postfix作为邮件网关实现病毒检测,内容过滤,反垃圾邮件等功能.原来的架构非常简单,只有两台机器,一个负责进公司 ...

  2. ssm+mysql+jsp打造在线考试系统WeKnow-学生端

    一.登陆模块 前台提交账号和密码传到后台处理控制层 1.1 首先是控制器 @RequestMapping(value="/studentLogin", method=Request ...

  3. 全面解析 | 钥匙环服务的应用场景&商业价值

    在互联互通的场景驱动下,同一开发者旗下常常拥有多款应用或者多个应用形态,用户在同一设备的不同应用或端口登录时,即便使用同一帐号,仍需要重复输入密码进行验证,操作复杂,直接影响到用户的使用体验,而华为钥 ...

  4. 5、Redis五大基本数据类型——String类型

    一.Redis支持数据类型简介 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). 二.String类 ...

  5. Kerboros 认证

    转:Kerberos介绍(全)

  6. ES 6 新特性笔记

    let 与 var 的区别 功能 let var 块级作用域 ️ 变量提升 ️ 重复声明(相同作用域内) ️ var 没有块级作用域的解决方法 使用函数替代块级作用域,以保证变量的正常使用,如: .. ...

  7. 通过idea创建Maven项目整合Spring+spring mvc+mybatis

    创建项目 File→new→project             然后就不断next直到项目面板出来 设置文件夹         注意:这里我个人习惯,在java下还建了ssm文件夹,然后再cont ...

  8. 动手做个 AI 机器人,帮我回消息!

    大家好,我是鱼皮,自从做了知识分享,我的微信就没消停过,平均每天会收到几百个消息,大部分都是学编程的朋友向我咨询编程问题. 但毕竟我只有一个人,没法所有消息都一个个回复,所以也是很愧疚和无力吧:另外我 ...

  9. CF1490D Permutation Transformation 题解

    Content 给定一个排列 \(a\),按照以下方法构造一棵树: 选择当前排列中的最大数作为根的编号. 最大数左边的所有数按照上述方法建左子树,若没有数则该节点没有左儿子. 最大数右边的所有数按照上 ...

  10. 端云协同,打造更易用的AI计算平台

    内容来源:华为开发者大会2021 HMS Core 6 AI技术论坛,主题演讲<端云协同,HUAWEI HiAI Foundation打造更易用的AI计算平台>. 演讲嘉宾:华为海思AI技 ...