Python之XML文件操作

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文件重新布局。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值