zoukankan      html  css  js  c++  java
  • Python之xml读写

    遇到问题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='
    ',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 自由拍照')
    View Code

    参考博客:https://blog.csdn.net/kongsuhongbaby/article/details/84869838

  • 相关阅读:
    VS2012程序打包部署详解
    C# 实现客户端程序自动更新
    C# dev gridcontrol中添加checkbox复选框
    sql server 修改表结构
    sql server 日期转换函数 convert()
    C# devExpress BandedGridView属性 备忘
    sql server 行转列 Pivot UnPivot
    c# 动态产生控件 注册动态控件事件
    阿里云镜像
    git 拉去代码要求密码 解决方法:生成gitLab公钥
  • 原文地址:https://www.cnblogs.com/juluwangshier/p/12059661.html
Copyright © 2011-2022 走看看