Python之XML文件操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/laozhuxinlu/article/details/71720588

Python之XML文件操作


前面我们介绍了Python对json文件的操作,相对还是比较简单的。这里给大家介绍怎么对XML文件操作,包括新建xml/修改/保存。


首先,需要加载的model有:

from xml.dom.minidom import Document

然后创建并保存:

doc = Document()
root = doc.createElement('div1')
doc.appendChild(root)

planType = doc.createElement('div2')
planType.appendChild(doc.createTextNode('div2_TextNode'))
playName = doc.createElement('div3')
playName.appendChild(doc.createTextNode('div3_TextNode'))
root.appendChild(planType)
root.appendChild(playName)

fb = open('/home/xiangang.zhu/Desktop/jsontest/TestData.xml','w')
doc.writexml(fb,indent = '\t',addindent = '\t',newl = '\n', encoding = 'utf-8')
fb.close()

讲解: 可以看到,我们创建的TestData.xml一个主节点:div1,两个并列的子节点:div2, 且div2节点下包含有内容。

最后通过open函数结合Document.writexml()函数实现写入xml格式内容。其中:

indent = '\t',addindent = '\t',newl = '\n', encoding = 'utf-8' 是对json文件的布局参数设置。

效果如下:


上面介绍的是怎么创建一个xml文件,那么对一个xml文件的修改呢?


需要加载的model有:


import xml.dom.minidom
from xml.dom.minidom import parse
from xml.dom.minidom import Document
from xml.etree import ElementTree

然后,获取到xml文件下的内容:


DOMTree = xml.dom.minidom.parse(xmlPath)
rootTree = DOMTree.documentElement

rootTree获取到了以后,其下的子节点就能通过rootTree.getElementsByTagName一一获取到了:


divByStr = rootTree.getElementsByTagName('div')

那么后面就是对该节点后面的内容进行修改了:

divByStr['div1'].firstChild.data = 'div1_changed_text'
divByStr['div2'].firstChild.data = 'div2_changed_text'

最后就是写入:

fb = open(xmlPath,'w')
DOMTree.writexml(fb,addindent = '\t',newl = '\n',encoding = 'utf-8')
fb.close()

这里需要提到的是,每次写入一次,会发现xml文件下的换行布局会递增,这里解决方式是对xml文件下的文件进行:读取 --> 去掉换行和多余空格 --> 重新写入。 函数如下:

def _resetXMLfile(self,filepath):
	emptyline = '\t\n'
	fb_r = open(filepath,'r')
	result = list()
	for line in fb_r.readlines():
		if emptyline in line:
			continue
		elif len(line) == 1:
			continue
		result.append(line)
	finResult = ''.join(result)
	fb_r.close()
	fb_w = open(filepath,'w')
	fb_w.write(finResult)
	fb_w .close()

最后可调用一下该resetXMLfile函数,会对xml文件重新布局。

猜你喜欢

转载自blog.csdn.net/laozhuxinlu/article/details/71720588
今日推荐