利用Python批处理xml文件

使用python对xml文件进行批处理,统一修改xml文件里的path标签。

由于笔者对python不是很熟,中间遇到了很多问题,在这里把经验分享给大家。
主要参考的博客是https://blog.csdn.net/yourgreatfather/article/details/83996031,非常感谢这位博主,给了我很多启发。
1.什么是xml文件?
XML 指可扩展标记语言(eXtensible Markup Language),被设计用来传输和存储数据。XML 是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。它也是元标记语言,即定义了用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言。
2.使用python如何对xml进行处理?
常见的 XML 编程接口有 DOM 和 SAX,这两种接口处理 XML 文件的方式不同,当然使用场合也不同。
Python 有三种方法解析 XML,SAX,DOM,以及 ElementTree:
(1)SAX (simple API for XML )
Python 标准库包含 SAX 解析器,SAX 用事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件。
(2)DOM(Document Object Model)
将 XML 数据在内存中解析成一个树,通过对树的操作来操作XML。
(3)ElementTree(元素树)
ElementTree就像一个轻量级的DOM,具有方便友好的API。代码可用性好,速度快,消耗内存少。
笔者在脚本中使用的就是DOM包。
DOM:文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口。
一个 DOM 的解析器在解析一个 XML 文档时,一次性读取整个文档,把文档中所有元素保存在内存中的一个树结构里,之后你可以利用DOM 提供的不同的函数来读取或修改文档的内容和结构,也可以把修改过的内容写入xml文件。
实际上笔者使用的只是xml.dom.minidom,它是文档对象模型接口的最小实现,具有与其他语言类似的API,在比完整的DOM更简单,并且也明显更小。
在这里我贴出代码,配合注释进行一下梳理。

这是python代码

import os  
import os.path  
import xml.dom.minidom  
#导包,没什么可说的      
filepath="./"  
files=os.listdir(filepath)  #得到文件夹下所有文件名称  
 #要确定一下xml文件的路径
for xmlFile in files: #遍历文件夹  
	if not os.path.isdir(xmlFile): #判断是否是文件夹,不是文件夹才打开  
		 print(xmlFile) #输出xml文件名
		 dom=xml.dom.minidom.parse(os.path.join(filepath,xmlFile))
		 #这行代码比较关键,parse用于打开xml文件,但是在这里不能直接传入文件名,否则会报错
		 #这里是把路径和xml文件名做了一个拼接,这样就没问题
		 root=dom.documentElement   #获得xml文件里的所有节点信息
		 path=root.getElementsByTagName('path')  #通过标签名得到标签里的内容,这里是获得了文件里的path,即<path>C:/xxx/0.jpg</path>
		###原始信息
		 print('原始信息')
		 path0 = path[0] #getElementsByTagName()返回带有指定名称的所有元素的 NodeList,因此要通过下标获取指定的path,这里是0,因为只有一个
		 print (path0.firstChild.data) #这是指定节点的第一个子节点的原始数据(未修改)
		 filename=xmlFile.split('.')
		 path0.firstChild.data='/xxxxx/data/Img/'+filename[0]+'.jpg'#这两行代码应该不难理解,就是获取路径并进行更新
		#打印输出(修改后)
		 print(path0.firstChild.data)
		 print ('##################')
		 with open(os.path.join(filepath,xmlFile),'w',encoding='UTF-8') as fh: 
		 #使用open函数写入xml文件,要注意后面两个参数,标识符'w'表示写入文本文件,一定要指定编码格式,否则会出现乱码和bug!
		 	dom.writexml(fh)
		 	#一个xml文件更改完毕
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要拆解XML文件,你可以使用Python中的xml.etree.ElementTree模块。这个模块提供了一种简单的方式来解析和操作XML数据。你可以使用ElementTree的parse函数来解析XML文件,并使用相关的方法来获取和操作XML元素。 下面是一个示例代码,展示了如何使用ElementTree来拆解XML文件: ```python import xml.etree.ElementTree as ET # 解析XML文件 tree = ET.parse('your_xml_file.xml') # 获取根元素 root = tree.getroot() # 遍历XML文件中的元素 for child in root: # 在这里可以对每个元素进行操作 # 例如获取元素的标签名和属性值 tag = child.tag attributes = child.attrib # 进一步处理元素的子元素 for sub_child in child: # 在这里可以对子元素进行操作 # 例如获取子元素的文本内容 text = sub_child.text # 可以根据需要进行其他操作,例如保存数据或进行其他处理 ``` 你可以根据自己的需求,进一步处理XML文件中的元素和数据。希望这个示例能帮助到你。 #### 引用[.reference_title] - *1* [python:实现xls文件转xml文件(附完整源码)](https://blog.csdn.net/it_xiangqiang/article/details/129695199)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [如何用Python读取xml文件后,裁剪标注图片和扩容数据](https://blog.csdn.net/weixin_42500684/article/details/113689179)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值