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 ...
随机推荐
- 思科命令 service password-encryption
service password-encryption 将会把所有password用思科私有方式加密, 标记是 7,show run 查看密码时,5为md5加密结果即secret, no servic ...
- BZOJ4668 冷战(LCT维护最小生成树)
BZOJ4668 冷战(LCT维护最小生成树) 题面 自己找去 HINT 这道题就是动态加边,然后查询u,v两点最早什么时候联通,强制在线.思考一下,最早什么时候联通不就等同于维护最小生成树吗(把这条 ...
- GaussDB T 单机模式手工建库
目录 你需要知道的 创建文件夹 编辑参数文件 将数据库启动到 NOMOUNT 状态 连接实例查询状态 创建数据库PROD1 如何连接原来 GAUSS 数据库 相关文章 GaussDB T 单机搭建 G ...
- Python学习笔记四:主要图表
图表部分,很多要记忆的.以下来自于培训材料的记录. 但我个人觉得更重要的是要根据业务特点确定用什么样的图表,然后再去查具体的参数,光记住参数意义不是很大. import numpy as np imp ...
- cenos7 安装samba
1)安装samba应用# yum install samba samba-client2)启动Samba应用 systemctl start smb nmb3)Samba配置文件 /etc/samba ...
- mac /windows
1.mac 和 windows 同样的浏览器展示的样式有偏差 考虑:字体的问题,mac/windows 的字体不一样 font-family 用法
- Python元组详解
元组的特征 元组类型的名字是tuple 元组的一级元素不可被修改.不能增加或者删除: 元组和列表的书写区别是将中括号改成了小括号: 为方便区分元组和普通方法的参数,一般在元组的最后一个元素后保持加一个 ...
- SKlearn | 学习总结
1 简介 scikit-learn,又写作sklearn,是一个开源的基于python语言的机器学习工具包.它通过NumPy, SciPy和Matplotlib等python数值计算的库实现高效的算法 ...
- 查看Sql Server库中某张表的结构
--快速查看表结构(比较全面的) SELECT CASE WHEN col.colorder = THEN obj.name ELSE '' END AS 表名, col.colorder AS 序号 ...
- 转载:polyphase filter
http://www.ws.binghamton.edu/fowler/fowler%20personal%20page/ee521.htm http://www.ws.binghamton.edu/ ...