Python与xml之更新篇
上一篇文章已经介绍如何解析xml文件,接下来是写与更新(modify、delete)xml文件的节点。对于xml的有关知识和学习资料在上一篇文章中已经有所介绍,这里就略去了。本文将使用dom来对xml进行操作。
test.xml的结构如下:
<?xml version="1.0" encoding="utf-8"?>
<school>
<class id=”09120016”>
<studentnumber>64<./studentnumber>
<class>
<class id=”09120015”>
<studentnumber>62<./studentnumber>
<class>
</school>
1、 导入minidom:from xml.dom import minidom
2、 生成内存中的映射:self.xmlfile = minidom.parse(“c://test.xml”)这时xmlfile在内存中为树状结构,其实也就是你xml的结构
3、 获得树状结构的第一级节点:self.children = self.xmlfile.firstChild.childNodes此时的children就是class节点的集合(它相当于一个存贮class节点的数组)
4、 更新包括增加、修改、删除数节点。获得班号为09120016的class节点
i = 1
while i <len(self.children):
id = str(self.children[i].attributes['id'].value)
if id == ‘09120016’
break
i = i+2
classnode = self.children[i]
classnode就是你要处理的节点(注意:i=1从数组的第一个开始取节点,i=i+2因为xml中的回车换行也算一个节点)
5、 获得如id之类的值在4中提到,那么如何过得如studentnumber标签对中的值呢?
通过children[i].getElementsByTagName("studentnumber")[0].firstChild.nodeValue就可以获得它的值,要改变它的值就把新值赋给它就可
6、 删除xml中的09120016班就把相应的节点删除就可以了
7、 要增加一个班级咋办呢?
建一个空的xml节点
<?xml version="1.0" encoding="utf-8"?>
<school>
<class id=””>
<studentnumber><./studentnumber>
<class>
</school>
根据1、2步导成内存中的空节点,在根据3、4、5步相应的方法赋值,然后把该赋值后的节点加到children节点数组中(不要忘了先添加一个回车换行节点indentNode = self.xmlfile.createTextNode('/n'+'/t'*3))