Python之xml读写
遇到问题xml文件读写,没有子节点需要新建ChildNode。
# -*- coding: utf-8 -*-
import os
import shutil
import xml.dom.minidom def correctxml(srcdir,finddir):
num = 0
list = os.listdir(srcdir)
for i in range(0,len(list)):
if list[i][-3:] == 'xml':
#print(list[i]) # 0863091.res
resdir = os.path.join(srcdir,list[i])
# C:\\Users\\Administrator\\Desktop\\两类错误图像\\有效期限\\答案错误\\0863091.res
restree = xml.dom.minidom.parse(resdir)
res = restree.documentElement
#value1 签发机构
#resvalue1 = res.getElementsByTagName('field')[1].getAttribute('value') resvalue1 = res.getElementsByTagName('Field')[6].childNodes[0].nodeValue
#value2 有效期限 .childNodes[0]
#resvalue2 = res.getElementsByTagName('field')[2].getAttribute('value')
#value3 签发日期
#resvalue3 = res.getElementsByTagName('field')[3].getAttribute('value')
#value4 有效期至
#resvalue4 = res.getElementsByTagName('field')[4].getAttribute('value')
if len(list[i]) == 11:
findpath = finddir + '\\' + list[i][:-7]
else:
findpath = finddir + '\\0' + list[i][:-7]
#findpath = finddir + '\\0' + list[i][:-7]
findlist = os.listdir(findpath) for j in range(0,len(findlist)):
if list[i][:-4] == findlist[j][:-4]:
xmldir = os.path.join(findpath,findlist[j])
#print(xmldir)
xmltree = xml.dom.minidom.parse(xmldir)
solutionxml = xmltree.documentElement
if solutionxml.getElementsByTagName('Field')[6].hasChildNodes():
solutionxml.getElementsByTagName('Field')[6].childNodes[0].nodeValue = resvalue1 # 存在节点直接赋值
else:
solutionxml.getElementsByTagName('Field')[6].appendChild(xmltree.createTextNode(resvalue1)) # 不存在节点新建节点
element = solutionxml.getElementsByTagName('Field')
print(element)
#solutionxml.getElementsByTagName('Field')[2].childNodes[0].nodeValue = resvalue2
#solutionxml.getElementsByTagName('Field')[3].childNodes[0].nodeValue = resvalue3
#solutionxml.getElementsByTagName('Field')[4].childNodes[0].nodeValue = resvalue4 with open(xmldir,'w', encoding='UTF-8') as fh:
xmltree.writexml(fh,newl='\n',encoding='UTF-8')
num = num + 1 # 计数
file1 = open(xmldir, 'r', encoding='utf-8') # 要去掉空行的文件
file2 = open('C:\\Users\\WT\\Desktop\\1.xml', 'w', encoding='utf-8') # 生成没有空行的文件
for line in file1.readlines():
line = line.lstrip("\n")
file2.write(line)
file1 = open(xmldir, 'w', encoding='utf-8')
file2 = open('C:\\Users\\WT\\Desktop\\1.xml', 'r', encoding='utf-8')
for line in file2.readlines():
file1.write(line)
print('修改了'+ xmldir) print(num) correctxml('C:\\Users\\WT\\Desktop\\tmp',
'D:\\标准样本库v2\\02 样本库\\02 标准答案\\06 机动车行驶证\\03 手机拍照\\01 自由拍照')
参考博客:https://blog.csdn.net/kongsuhongbaby/article/details/84869838
Python之xml读写的更多相关文章
- 【Python】Python XML 读写
class ACTIVE_FILE_PROTECT_RULE_VIEW(APIView): renderer_classes = (JSONRenderer, BrowsableAPIRenderer ...
- Python之xml文档及配置文件处理(ElementTree模块、ConfigParser模块)
本节内容 前言 XML处理模块 ConfigParser/configparser模块 总结 一.前言 我们在<中我们描述了Python数据持久化的大体概念和基本处理方式,通过这些知识点我们已经 ...
- 【转】Python之xml文档及配置文件处理(ElementTree模块、ConfigParser模块)
[转]Python之xml文档及配置文件处理(ElementTree模块.ConfigParser模块) 本节内容 前言 XML处理模块 ConfigParser/configparser模块 总结 ...
- python 生成 xml文件 属性的顺序问题
需求很奇葩. 文档示例 <ITEM key="username" eng="User Name" chn="用户名" val=&quo ...
- python读取xml文件
关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件. 什么是 ...
- python 解析XML python模块xml.dom解析xml实例代码
分享下python中使用模块xml.dom解析xml文件的实例代码,学习下python解析xml文件的方法. 原文转自:http://www.jbxue.com/article/16587.html ...
- python解析xml模块封装代码
在python中解析xml文件的模块用法,以及对模块封装的方法.原文转自:http://www.jbxue.com/article/16586.html 有如下的xml文件:<?xml vers ...
- python解析xml之lxml
虽然python解析xml的库很多,但是,由于lxml在底层是用C语言实现的,所以lxml在速度上有明显优势.除了速度上的优势,lxml在使用方面,易用性也非常好.这里将以下面的xml数据为例,介绍l ...
- python处理xml的常用包(lib.xml、ElementTree、lxml)
python处理xml的三种常见机制 dom(随机访问机制) sax(Simple APIs for XML,事件驱动机制) etree python处理xml的三种包 标准库中的xml Fredri ...
随机推荐
- 分布式集群HA模式部署
一:HDFS系统架构 (一)利用secondary node备份实现数据可靠性 (二)问题:NameNode的可用性不高,当NameNode节点宕机,则服务终止 二:HA架构---提高NameNode ...
- Cows Of The Round Table【DFS】
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAz0AAAKiCAIAAABzTSUAAAAgAElEQVR4Aey9C5RnWVXff4GBUR6j8u ...
- Android_下方弹出菜单的实现
这一功能要用到动画相关知识 实现点击按钮弹出下方输入框,这里点击可弹出一个输入界面,其中包括一个小型计算器. 点击date可弹出datedialog设置date. 1.编写弹出框的布局文件 <? ...
- 小总结:快速幂+贪心————Bit Mask____UVA 10718 多多去理解去温习哦!
传送门:https://vjudge.net/problem/UVA-10718 Preview: bitstream:a flow of data in binary form. in bit-wi ...
- VMware安装CentOS系统与配置全过程
1.需要哪些安装包 VMware Workstation 15 Pro CentOS-7-x86_64-DVD-1810 hadoop-2.7.3 apache-hive-3.1.1 jdk-8u18 ...
- Educational Codeforces Round 81 (Rated for Div. 2) C. Obtain The String
题目链接:http://codeforces.com/contest/1295/problem/C 题目:给定字符串s,t. 给定一个空串z,需要按照规则把z构造成 string z == stri ...
- PL/SQL快键键——自动替换(输入sf直接跳出来select * from)
PL/SQL Developer使用技巧.快捷键 1.类SQL PLUS窗口:File->New->Command Window,这个类似于oracle的客户端工具sql plus,但比它 ...
- LaTeX技巧005:定制自己炫酷的章节样式实例
示例一: 实现代码: \usepackage[Lenny]{fncychap} 示例二: 实现代码: \usepackage[avantgarde]{quotchap} \renewcommand\c ...
- 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(8.7)Standard Vendor Specific Command Format
8.7 Standard Vendor Specific Command Format 标准的厂商特定命令格式 Controller可以支持Figure 106中定义的标准的Vendor Specif ...
- 将自定义工程加入到python根目录下
1. 在D:\Program Files\Python\Lib\site-packages 添加.pth文件,文件名为模块名称(即auto_XXX),文件内容为模块所在目录.(python添加自定义的 ...