导入模块:

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. CountDownLatch原理

    正如每个Java文档所描述的那样,CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行.在Java并发中,countdownlatch的概念是一 ...

  2. shiro免认证的路径配置

    – ?:匹配一个字符,如/admin? 将匹配/admin1,但不匹配/admin 或/admin/:– *:匹配零个或多个字符串,如/admin 将匹配/admin./admin123,但不匹配/a ...

  3. Linkerd Service Mesh 服务配置文件规范

    服务配置文件 为 Linkerd 提供有关服务的附加信息. 以下是可以使用服务配置文件完成的所有操作的参考. 系列 中文手册(https://linkerd.hacker-linner.com) Sp ...

  4. [特征工程] encoding

    参考:An Overview of Encoding Techniques | Kaggle Method 1: Label encoding  给每个类别以一个数字label,作为分类.将类别映射到 ...

  5. Tableau预测指示器的运用

    一.将订单日期拖拽两次到列,日期格式设置为年订单日期和月订单日期 二.将销售额拖拽至行,对应结果如下图所示 三.分析-趋势线-显示趋势线-显示选择整个视图 四.右键预测的任意位置,选择预测-描述预测- ...

  6. 安装xampp开发环境更改默认项目路径

    xampp开发环境中默认的项目路径在xampp下的htdocs文件下 如果想修改默认项目的位置步骤如下: 1)D:\xampp\apache\conf 找到httpd.conf打开 2)找到 Docu ...

  7. [BUUCTF]PWN——picoctf_2018_rop chain

    picoctf_2018_rop chain 附件 步骤: 例行检查,32位,开启了NX保护 试运行一下程序,看到输入太长数据会崩溃 32位ida载入,习惯性的检索程序里的字符串,看见了flag.tx ...

  8. Offset函数(Excel函数集团)

    此处文章均为本妖原创,供下载.学习.探讨! 文章下载源是Office365国内版1Driver,如有链接问题请联系我. 请勿用于商业!谢谢 下载地址:https://officecommunity-m ...

  9. Springboot MVC 自动配置

    Springboot MVC 自动配置 官方文档阅读 https://docs.spring.io/spring-boot/docs/current/reference/html/web.html#w ...

  10. CF420A Start Up 题解

    Content 给定一个长度为 \(n\) 的字符串,求这个字符串整个反转过来后是否和原字符串一样. 数据范围:\(1\leqslant n\leqslant 10^5\). Solution 众所周 ...