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 ...
随机推荐
- python常见函数积累
shape() 返回数组或者数据框有多少行或者多少列 import numpy as np x = np.array([[1,2,5],[2,3,5],[3,4,5],[2,3,6]]) #输出数组的 ...
- EF Code-First(Oracle)通过Migration来更新数据库的表的字段
关于Oracle中使用Entity Framework 6.x Code-First方式开发,请参考博客(菩提树下的杨过)https://www.cnblogs.com/yjmyzz/p/how-to ...
- 第十八次CSP认证游记 | 2019.12.15
CSP认证的考试是Haogod介绍的,取得一定成绩之后能有机会参加CCSP的分赛区和全国决赛.这次来参加认证要感谢老师的奔走为我们申请学校的报销,虽然最终因为这不是比赛所以报名费和差旅费下不来,但是老 ...
- burpsuite各个板块儿详细讲解
burpsuite实战指南,想要的都在这里:https://t0data.gitbooks.io/burpsuite/content/
- early-stopping的使用
early-stopping的使用 待办 https://blog.csdn.net/qq_37430422/article/details/103638681 github对应类导入,直接放在项目更 ...
- 刷题76. Minimum Window Substring
一.题目说明 题目76. Minimum Window Substring,求字符串S中最小连续字符串,包括字符串T中的所有字符,复杂度要求是O(n).难度是Hard! 二.我的解答 先说我的思路: ...
- Linq To Sqlite使用心得
若要使用Linq To Sqlite类库,可以安装Devart Linq Connect Model,如图: 新建这个Model就可以和Linq To Sql一样使用Linq模型,下载地址:https ...
- Tensorflow中one_hot() 函数用法
官网默认定义如下: one_hot(indices, depth, on_value=None, off_value=None, axis=None, dtype=None, name=None) 该 ...
- C++-POJ2777-Count Color[线段树][lazy标记][区间修改]
分析:https://www.bilibili.com/read/cv4777102 #include <cstdio> #include <algorithm> using ...
- Codeforces Round #602 (Div. 2, based on Technocup 2020 Elimination Round 3) A Math Problem
//只要从所有区间右端点的最小值覆盖到所有区间左端点的最大值即可 #include<iostream> using namespace std ; int x,y; int n; int ...