python批量修改xml内容和属性

想把原始的xml文件
python批量修改xml内容和属性
修改为
python批量修改xml内容和属性
在spyder3里面输入

# -*- coding: utf-8 -*-
"""
Created on Sat Mar 16 10:25:40 2019

@author: w
"""


import os
import os.path
import xml.dom.minidom
 
path="C:/dl/1-4967-error-xml/test/"
files=os.listdir(path)  #得到文件夹下所有文件名称
s=[]
for xmlFile in files: #遍历文件夹
    if not os.path.isdir(xmlFile): #判断是否是文件夹,不是文件夹才打开
        print(xmlFile)
 
	#TODO
	#xml文件读取操作
 
	#将获取的xml文件名送入到dom解析
        dom=xml.dom.minidom.parse(os.path.join(path,xmlFile))  #最核心的部分,路径拼接,输入的是具体路径
        root=dom.documentElement
        #获取标签对name/pose之间的值
        name=root.getElementsByTagName('folder')
        pose=root.getElementsByTagName('path')
        #原始信息
        print ('原始信息')
        n0=name[0]
        print( n0.firstChild.data)
 
        p0=pose[0]
        print( p0.firstChild.data)
	
	#修改
        n0.firstChild.data='images1'
        p0.firstChild.data='C:/dl/'
	#打印输出
        print('修改后的 name')
        print( n0.firstChild.data)
 
        print( '修改后的 pose')
        print( p0.firstChild.data)
        print( '~~~~~')
        with open(os.path.join(path,xmlFile),'w') as fh:
            dom.writexml(fh)
            print('写入name/pose OK!')

就可以实现
python批量修改xml内容和属性
非常好用
但是会有<?xml version="1.0" ?>
python批量修改xml内容和属性
原因是
python批量修改xml内容和属性
python批量修改xml内容和属性
所以可以修改minidom.py
python批量修改xml内容和属性
这样就没有版本信息了

也可以生成一个脚本来修改
下载Git_v2.21.0.zip 安装
在一个文件夹中创建一个mkdir.sh
python批量修改xml内容和属性
使用notepad++打开

#!/bin/sh


cd 'C:/dl/1-4967-error-xml/test/'

for file in `ls C:/dl/1-4967-error-xml/test/`
do 
echo $file
sed -i '/<?xml version="1.0" ?><annotation>/s/<?xml version="1.0" ?>//g' $file
done

echo 'all is ok.'

这样也可以去除版本信息

2

去除烦人的<?xml version="1.0" ?>以后发现还有一个问题
使用notepad++打开0001.xml
原来
python批量修改xml内容和属性
新生成的0001.xml

python批量修改xml内容和属性
Unix(LF)和Windows(CR LF)区别
通过查找资料得知Unix(LF)和Windows(CR LF)区别如下:

python批量修改xml内容和属性
python批量修改xml内容和属性
在一个平台上使用另一种换行符的文件可能会带来意想不到的问题, 特别是在编辑程序代码时,有时候代码在编辑器中显示正常, 但在编辑时却会因为换行符问题而出错。

一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix下打开的话,在每行的结尾会多车一个^M字符。

修改方法 下载
换行符批量转换工具
https://download.****.net/download/qq542731976/9958424

python批量修改xml内容和属性
实现转换