初识python: xml 操作
导入模块:
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 操作的更多相关文章
- 【转】python XML 操作总结(创建、保存和删除,支持utf-8和gb2312)
原文地址:http://hi.baidu.com/tbjmnvbagkfgike/item/6743ab10af43bb24f6625cc5 最近写程序需要用到xml操作,看了看python.org上 ...
- Python XML操作
XML(可扩展性标记语言)是一种非常常用的文件类型,主要用于存储和传输数据.在编程中,对XML的操作也非常常见. 本文根据python库文档中的xml.etree.ElementTree类来进行介绍X ...
- Python导出Excel为Lua/Json/Xml实例教程(一):初识Python
Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...
- python - XML文件及其操作
xml文件也是实现不同语言或者程序之间进行数据交换的协议,它的特点是尖括号开头,尖括号结尾.使用范围就更为广泛了,tomcat resin kvm 等等,使用了大量的xml文件来进行相关配置.先来看一 ...
- 篇2 安卓app自动化测试-初识python调用appium
篇2 安卓app自动化测试-初识python调用appium --lamecho辣么丑 1.1概要 大家好!我是lamecho(辣么丑),上一篇也是<安卓app自动化测 ...
- Python XML解析(转载)
Python XML解析 什么是XML? XML 指可扩展标记语言(eXtensible Markup Language). 你可以通过本站学习XML教程 XML 被设计用来传输和存储数据. XML是 ...
- python学习之路-1 python基础操作
本篇所涉及的内容 变量 常量 字符编码 用户交互input 格式化字符串 python的缩进规则 注释 初始模块 条件判断 循环 变量 变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中 ...
- Python xml 模块
Python xml 模块 TOC 什么是xml? xml和json的区别 xml现今的应用 xml的解析方式 xml.etree.ElementTree SAX(xml.parsers.expat) ...
- Python XML解析之ElementTree
参考网址: http://www.runoob.com/python/python-xml.html https://docs.python.org/2/library/xml.etree.eleme ...
- python大法好——Python XML解析
Python XML解析 什么是XML? XML 被设计用来传输和存储数据. XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识. 它也是元标记语言,即定义了用于定义其他与 ...
随机推荐
- CountDownLatch原理
正如每个Java文档所描述的那样,CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行.在Java并发中,countdownlatch的概念是一 ...
- shiro免认证的路径配置
– ?:匹配一个字符,如/admin? 将匹配/admin1,但不匹配/admin 或/admin/:– *:匹配零个或多个字符串,如/admin 将匹配/admin./admin123,但不匹配/a ...
- Linkerd Service Mesh 服务配置文件规范
服务配置文件 为 Linkerd 提供有关服务的附加信息. 以下是可以使用服务配置文件完成的所有操作的参考. 系列 中文手册(https://linkerd.hacker-linner.com) Sp ...
- [特征工程] encoding
参考:An Overview of Encoding Techniques | Kaggle Method 1: Label encoding 给每个类别以一个数字label,作为分类.将类别映射到 ...
- Tableau预测指示器的运用
一.将订单日期拖拽两次到列,日期格式设置为年订单日期和月订单日期 二.将销售额拖拽至行,对应结果如下图所示 三.分析-趋势线-显示趋势线-显示选择整个视图 四.右键预测的任意位置,选择预测-描述预测- ...
- 安装xampp开发环境更改默认项目路径
xampp开发环境中默认的项目路径在xampp下的htdocs文件下 如果想修改默认项目的位置步骤如下: 1)D:\xampp\apache\conf 找到httpd.conf打开 2)找到 Docu ...
- [BUUCTF]PWN——picoctf_2018_rop chain
picoctf_2018_rop chain 附件 步骤: 例行检查,32位,开启了NX保护 试运行一下程序,看到输入太长数据会崩溃 32位ida载入,习惯性的检索程序里的字符串,看见了flag.tx ...
- Offset函数(Excel函数集团)
此处文章均为本妖原创,供下载.学习.探讨! 文章下载源是Office365国内版1Driver,如有链接问题请联系我. 请勿用于商业!谢谢 下载地址:https://officecommunity-m ...
- Springboot MVC 自动配置
Springboot MVC 自动配置 官方文档阅读 https://docs.spring.io/spring-boot/docs/current/reference/html/web.html#w ...
- CF420A Start Up 题解
Content 给定一个长度为 \(n\) 的字符串,求这个字符串整个反转过来后是否和原字符串一样. 数据范围:\(1\leqslant n\leqslant 10^5\). Solution 众所周 ...