天天微动态丨python操作XML格式文件的一些常见方法
目录
前言1. 读取文件和内容2.读取节点数据3.修改和删除节点4.构建文档 方式一ET.Element()补充:XML文件和JSON文件互转1、XML文件转为JSON文件2、JSON文件转换为XML文件总结前言
可扩展标记语言,是一种简单的数据存储语言,XML被设计用来传输和存储数据
存储,可用来存放配置文件,例:java配置文件传输,网络传输以这种格式存在,例:早期ajax传输数据等
2
2023
141100
5
2026
59900
69
2026
13600
1. 读取文件和内容
#导包
from xml.etree import ElementTree as ET
# ET去打开xml文件
tree = ET.parse("files/xo.xml")
# 获取根标签
root = tree.getroot()
print(root) #
2.读取节点数据
获取根标签
root = ET.XML(content)
查找节点【默认找第一个】 find()
(资料图片)
country_object = root.find("country")
print(country_object) #
获取节点标签 tag
country_object.tag #country
获取节点属性 attrib
country_object.attrib #{"name": "Liechtenstein"}
获取节点文本 text
gdppc_object.text #141100
循环节点
# 获取data标签的孩子标签
for child in root:
print(child.tag, child.attrib)
#获取child标签的孩子标签
for node in child:
print(node.tag, node.attrib, node.text)
查找所有标签 iter()
# 获取data里面所有year标签
for child in root.iter("year"):
print(child.tag, child.text)
查找所有标签 findall()
# 查找所有的country标签
v1 = root.findall("country")
查找标签
# 查找country里面的rank标签,找第一个
v2 = root.find("country").find("rank")
3.修改和删除节点
【修改和删除内容只在内存中修改,没有存到文件中,都要重新保存文件】
修改节点内容
#修改rank文本
rank.text = "999"
tree = ET.ElementTree(root)
tree.write("new.xml", encoding="utf-8")
修改节点属性
#修改rank属性
rank.set("update", "2020-11-11")
tree = ET.ElementTree(root)
tree.write("new.xml", encoding="utf-8")
保存文件
tree = ET.ElementTree(root)
tree.write("new.xml", encoding="utf-8")
删除节点
root.remove( root.find("country") )
tree = ET.ElementTree(root)
tree.write("new.xml", encoding="utf-8")
4.构建文档 方式一ET.Element()
from xml.etree import ElementTree as ET
#创建根标签
root=ET.Element("home")
# 创建大儿子,与root还没有关系
son1=ET.Element("son",{"name":"儿1"})
#创建小儿子,与root还没有关系
son2=ET.Element("son",{"name":"儿2"})
#创建2个孙子
grandson1=ET.Element("grandson",{"name":"儿11"})
grandson2=ET.Element("grandson",{"name":"儿12"})
# 创建两个孙子,与son1还没有关系
son1.append(grandson1)
son1.append(grandson2)
# 把儿子添加到根节点
root.append(son1)
root.append(son2)
#root节点放到根节点中
tree=ET.ElementTree(root)
#保存xml文件
# short_empty_elements=True,节点中没有元素,用简写方式显示例:
tree.write("file/root.xml",encoding="utf-8",short_empty_elements=True)
方式二 标签.makeelement()
from xml.etree import ElementTree as ET
# 创建根节点
root = ET.Element("famliy")
# 创建大儿子,与root还没有关系
son1 = root.makeelement("son", {"name": "儿1"})
#创建小儿子,与root还没有关系
son2 = root.makeelement("son", {"name": "儿2"})
# 创建两个孙子,与son1还没有关系
grandson1 = son1.makeelement("grandson", {"name": "儿11"})
grandson2 = son1.makeelement("grandson", {"name": "儿12"})
son1.append(grandson1)
son1.append(grandson2)
# 把儿子添加到根节点中
root.append(son1)
root.append(son2)
tree = ET.ElementTree(root)
tree.write("oooo.xml",encoding="utf-8")
方式三 标签.SubElement(),创建标签的子标签
孙子
from xml.etree import ElementTree as ET
# 创建根节点
root = ET.Element("famliy")
# 创建root节点的子标签大儿子
son1 = ET.SubElement(root, "son", attrib={"name": "儿1"})
# 创建root节点的子标签小儿子
son2 = ET.SubElement(root, "son", attrib={"name": "儿2"})
# 在大儿子中创建一个孙子
grandson1 = ET.SubElement(son1, "age", attrib={"name": "儿11"})
grandson1.text = "孙子"
et = ET.ElementTree(root) #生成文档对象
et.write("test.xml", encoding="utf-8")
方式四
from xml.etree import ElementTree as ET
# 创建根节点
root = ET.Element("user")
#补充:XML文件和JSON文件互转
记录工作中常用的一个小技巧
cmd控制台安装第三方模块:
pip install xmltodict
1、XML文件转为JSON文件
新建一个1.xml文件:
tom
mary
love
转换代码实现:
import jsonimport xmltodictdef xml_to_json(xml_str):
"""parse是的xml解析器,参数需要
:param xml_str: xml字符串
:return: json字符串
"""
xml_parse = xmltodict.parse(xml_str)
# json库dumps()是将dict转化成json格式,loads()是将json转化成dict格式。
# dumps()方法的ident=1,格式化json
json_str = json.dumps(xml_parse, indent=1)
return json_str
XML_PATH = "./1.xml" # xml文件的路径with open(XML_PATH, "r") as f:
xmlfile = f.read()
with open(XML_PATH[:-3] + "json", "w") as newfile:
newfile.write(xml_to_json(xmlfile))
输出结果(生成json文件):
2、JSON文件转换为XML文件
新建test.json文件:
{
"student": {
"course": {
"name": "math",
"score": "90"
},
"info": {
"sex": "male",
"name": "name"
},
"stid": "10213"
}}转换代码实现:
import xmltodictimport jsondef json_to_xml(python_dict):
"""xmltodict库的unparse()json转xml
:param python_dict: python的字典对象
:return: xml字符串
"""
xml_str = xmltodict.unparse(python_dict)
return xml_str
JSON_PATH = "./test.json" # json文件的路径with open(JSON_PATH, "r") as f:
jsonfile = f.read()
python_dict = json.loads(jsonfile) # 将json字符串转换为python字典对象
with open(JSON_PATH[:-4] + "xml", "w") as newfile:
newfile.write(json_to_xml(python_dict))
输出结果(生成xml文件):
总结
到此这篇关于python操作XML格式文件的文章就介绍到这了,更多相关python操作XML文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 1转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 2充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 3好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 4名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?
- 5亚马逊云科技成立量子网络中心致力解决量子计算领域的挑战
- 6京东绿色建材线上平台上线 新增用户70%来自下沉市场
- 7网红淘品牌“七格格”chuu在北京又开一家店 潮人新宠chuu能红多久
- 8市场竞争加剧,有车企因经营不善出现破产、退网、退市
- 9北京市市场监管局为企业纾困减负保护经济韧性
- 10市场监管总局发布限制商品过度包装标准和第1号修改单

