遇到问题xml文件读写,没有子节点需要新建ChildNode。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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=' ',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(" ") 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