python操作xml

p y t h o n 操 作 x m l python操作xml pythonxml

一 生成xml

from xml.dom.minidom import Document # 引入Document模块
doc = Document()  # 创建Document
# 1.创建节点
train_config = doc.createElement("train_config")  # 创建节点 (根节点)
param = doc.createElement("param")  # 创建节点(二级)
epoch = doc.createElement("epoch")  # 创建节点(三级)
batchsize = doc.createElement("batchsize")  # 创建节点(三级)
dataset_path = doc.createElement("dataset_path")  # 创建节点(三级)

# 2.设置节点内容
epoch_content = doc.createTextNode("100")
batchsize_content = doc.createTextNode("2")
dataset_path_content = doc.createTextNode(r"D:\2.png")

# 3.在节点中加入内容
epoch.appendChild(epoch_content)
batchsize.appendChild(batchsize_content)
dataset_path.appendChild(dataset_path_content)

# 4.设置节点层级
doc.appendChild(train_config)  # 3.1 添加根节点
train_config.appendChild(param) # 3.2 添加二级节点
param.appendChild(epoch) # 3.2 添加三级节点
param.appendChild(batchsize) # 3.2 添加三级节点
param.appendChild(dataset_path) # 3.2 添加三级节点


# 5.保存
filename = "train_config.xml"
f = open(filename, "w")
f.write(doc.toprettyxml(indent="   "))  # 设置间隔
f.close()

生产的xml文件内容

<?xml version="1.0" ?>
<train_config>
   <param>
      <epoch>100</epoch>
      <batchsize>2</batchsize>
   </param>
</train_config>

二 遍历xml节点

for child in root:
    print(child.tag, child.attrib)  # 获取下一级的标签和属性
    for i in child:
        print('  ', i.tag, i.text)  # 获取再下一级的标签和文本
# 只遍历epoch节点
for node in root.iter('epoch'):  # 在 根节点的子节点中过滤出标签‘epoch’
    print(node.tag, node.text)  # 打印节点标签和文本

三 解析xml节点

import xml.etree.ElementTree as ET # 导入ElementTree模块

tree = ET.parse('train_config.xml') # 获取解析对象
root = tree.getroot()  # 获取根节点
print(root.tag)
for child in root:
    print(child.tag, child.attrib)  # 获取下一级的标签和属性
    for i in child:
        print('  ', i.tag, i.text)  # 获取再下一级的标签和文本

四 修改xml节点

for node in root.iter('epoch'):
    new_year = 123  # 修改获取到的文本 (先转为int 型)
    node.text = str(new_year)  # 再转为string 型
tree.write("train_config.xml")  # 持久化

五 删除xml节点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python是一种优秀的编程语言,在实现解析XML文件的功能方面表现出色。要使用Python读取XML,需要先安装一个XML解析库。Python提供了三种内置的XML解析库:SAX,DOM和ElementTree。接下来,我们将简单介绍这些库的使用方法。 SAX全称是“Simple API for XML”,在Python中可通过import sax模块来调用。SAX是基于事件驱动的解析器,它不需要将整个XML文件加载到内存中,而是在解析的同时从文件中读取数据块,处理完后就释放。SAX解析器在碰到一个元素的开始和结束标签时,会触发事件,我们只需要实现相应事件的处理函数,就能获取到元素的内容和属性等信息。 DOM全称是“Document Object Model”,在Python中可通过import xml.dom.minidom模块来调用。DOM是将整个XML文件加载到内存中,再将它解析成一个树形结构,通过节点之间的关系来访问元素内容的方式。使用DOM方式解析XML文件,必须将整个XML文件加载到内存中,所以对于较大的XML文件,DOM方式并不是最适合的。 ElementTree全称是“xml.etree.ElementTree”,在Python中可通过import xml.etree.ElementTree模块来调用。ElementTree是一种轻量级的、以事件驱动的XML解析库,它不需要大量的内存,并且解析速度很快。使用ElementTree库的主要步骤是:将XML文件加载到内存中,将其转换成元素树,然后利用Element对象和ElementTree API就能实现对XML文件的解析和操作。 综上所述,Python读取XML的三种方法各有优缺点,在不同的场合下选择不同的解析方法会更加合适。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值