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 ...
随机推荐
- 剑指offer-面试题14-剪绳子-动态规划法
/* 题目: 给定一个长度为n的绳子,把绳子剪为m段,(n>1,m>1) 求各段绳子乘积的最大值. */ /* 思路: 动态规划. f(n)=max(f(1)*f(n-1),f(2)*f( ...
- mysql数据库环境配置及部分问题
亲身经历了MySQL初学者的痛苦,把主要问题和解决方法整理一下. 一.解压版环境配置 1.把压缩包解压到某盘符下. 解压后在类似“E:\mysql-5.7.22-winx64”这个文件夹中可以看到以上 ...
- Spring Batch 批处理原则与建议
Spring Batch 批处理原则与建议 当我们构建一个批处理的过程时,必须注意以下原则: 通常情况下,批处理的过程对系统和架构的设计要够要求比较高,因此尽可能的使用通用架构来处理批量数据处理,降低 ...
- ACM-ICPC 2018 徐州赛区网络预赛 Features Track
签到题 因为一个小细节考虑不到wa了两次 // 一开始没这个if wa了.因为数据中存在同一帧(frame)一个相同的值出现多次,这样子同一个i 后面的同样的特征会把len重置为1 #include ...
- laravel中{{}}和{!! !!}的区别
1.{{}}和{!! !!} 中{{}}支持转义 一段html代码只是被当成普通的字符串输出 ,{!! !!} 不支持转移 一段html代码可以被正常的解析 1.2具体什么意思呢我们上代码演 ...
- burpsuite各个板块儿详细讲解
burpsuite实战指南,想要的都在这里:https://t0data.gitbooks.io/burpsuite/content/
- 百度网盘无vip高速下载的方法
我拿的是谷歌浏览器做实验 首先下载一个可以改user-agent的插件 我chorm里面下载的是User-Agent Switcher for Chrome插件 将百度网盘的url地址中的baidu. ...
- javaweb基础备忘
Request对象的主要方法有哪些 setAttribute(String name,Object):设置名字为name的request 的参数值 getAttribute(String name): ...
- CodeForces 1144B
原题https://vjudge.net/problem/CodeForces-1144B #include<bits/stdc++.h> using namespace std; vec ...
- SpringData JPA快速入门和基本的CRUD操作以及Specifications条件查询
SpringData JPA概述: SpringData JPA 是 Spring 基于 ORM 框架.JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据库的访问和操作 ...