整理一下在个人使用的一些有关的minidom操作xml的命令,备查
读取xml文件
1、引入minidom类
from xml.dom import minidom
2、获取xml文件并得到文档元素对象
path=minidom.parse('文件名称')
root=path.documentElement
3、通过元素名字的获取子元素
itemlist=root.getElementsByTagName('元素名称')
4、若元素存在属性,获取元素属性
item = itemlist[0]
item.getAttribute(‘属性名称’)
5、获取元素下的值(处理元素值中空格、回车等)
content=itemlist[0].childNodes[0].nodeValue
content="".join(content.split())
写入xml文件
1、打开要写入的xml文件
f=open("student.xml","w")
2、创建根节点及子节点、子节点内容
doc=minidom.Document()
infoNode=doc.createElement("info")
doc.appendChild(infoNode)
建立子节点并加入名称
nameNode=doc.createElement("name")
infoNode.appendChild(nameNode)
建立子节点内容并加入到子节点之下
nameTextNode = doc.createTextNode("mingzi")
nameNode.appendChild(nameTextNode)
若子节点需要另外的属性,则使用
nameNode.setAttribute("名称",值)
3、写入xml文件
doc.writexml(f,'\n',' ',' ',"utf-8")
下面是取自网络的解释
#第一个参数f就是你的目标文件对象,第二个参数好像是<?xml>和下面一个根节点的缩进排列格式,
第三个参数好像是其他节点与子节点的缩进排列格式,第四个参数制定了换行的格式(如果你填入" ",那就不换行了,所有的xml都缩在了一行上面 :) )
,第五个参数制定了xml内容的编码。除了第一个参数是必须的,其他参数都是可选择的。
4、其他
若写入的xml文件读取时为乱码,则还需要进行转码操作,此处需要用到codecs和chardet库
import codecs
import chardet
f=codecs.open('test.xml','r').read()
source_encoding=chardet.detect(f)['encoding']
f=f.decode('gbk')
codecs.open("test.xml", 'w', encoding='utf-8').write(f)