遇到问题xml文件读写,没有子节点需要新建ChildNode。
1 # -*- coding: utf-8 -*- 2 import os 3 import shutil 4 import xml.dom.minidom 5 6 def correctxml(srcdir,finddir): 7 num = 0 8 list = os.listdir(srcdir) 9 for i in range(0,len(list)): 10 if list[i][-3:] == 'xml': 11 #print(list[i]) # 0863091.res 12 resdir = os.path.join(srcdir,list[i]) 13 # C:\\Users\\Administrator\\Desktop\\两类错误图像\\有效期限\\答案错误\\0863091.res 14 restree = xml.dom.minidom.parse(resdir) 15 res = restree.documentElement 16 #value1 签发机构 17 #resvalue1 = res.getElementsByTagName('field')[1].getAttribute('value') 18 19 resvalue1 = res.getElementsByTagName('Field')[6].childNodes[0].nodeValue 20 #value2 有效期限 .childNodes[0] 21 #resvalue2 = res.getElementsByTagName('field')[2].getAttribute('value') 22 #value3 签发日期 23 #resvalue3 = res.getElementsByTagName('field')[3].getAttribute('value') 24 #value4 有效期至 25 #resvalue4 = res.getElementsByTagName('field')[4].getAttribute('value') 26 if len(list[i]) == 11: 27 findpath = finddir + '\\' + list[i][:-7] 28 else: 29 findpath = finddir + '\\0' + list[i][:-7] 30 #findpath = finddir + '\\0' + list[i][:-7] 31 findlist = os.listdir(findpath) 32 33 for j in range(0,len(findlist)): 34 if list[i][:-4] == findlist[j][:-4]: 35 xmldir = os.path.join(findpath,findlist[j]) 36 #print(xmldir) 37 xmltree = xml.dom.minidom.parse(xmldir) 38 solutionxml = xmltree.documentElement 39 if solutionxml.getElementsByTagName('Field')[6].hasChildNodes(): 40 solutionxml.getElementsByTagName('Field')[6].childNodes[0].nodeValue = resvalue1 # 存在节点直接赋值 41 else: 42 solutionxml.getElementsByTagName('Field')[6].appendChild(xmltree.createTextNode(resvalue1)) # 不存在节点新建节点 43 element = solutionxml.getElementsByTagName('Field') 44 print(element) 45 #solutionxml.getElementsByTagName('Field')[2].childNodes[0].nodeValue = resvalue2 46 #solutionxml.getElementsByTagName('Field')[3].childNodes[0].nodeValue = resvalue3 47 #solutionxml.getElementsByTagName('Field')[4].childNodes[0].nodeValue = resvalue4 48 49 with open(xmldir,'w', encoding='UTF-8') as fh: 50 xmltree.writexml(fh,newl='\n',encoding='UTF-8') 51 num = num + 1 # 计数 52 file1 = open(xmldir, 'r', encoding='utf-8') # 要去掉空行的文件 53 file2 = open('C:\\Users\\WT\\Desktop\\1.xml', 'w', encoding='utf-8') # 生成没有空行的文件 54 for line in file1.readlines(): 55 line = line.lstrip("\n") 56 file2.write(line) 57 file1 = open(xmldir, 'w', encoding='utf-8') 58 file2 = open('C:\\Users\\WT\\Desktop\\1.xml', 'r', encoding='utf-8') 59 for line in file2.readlines(): 60 file1.write(line) 61 print('修改了'+ xmldir) 62 63 print(num) 64 65 66 correctxml('C:\\Users\\WT\\Desktop\\tmp', 67 'D:\\标准样本库v2\\02 样本库\\02 标准答案\\06 机动车行驶证\\03 手机拍照\\01 自由拍照')
参考博客:https://blog.csdn.net/kongsuhongbaby/article/details/84869838