python 操作xml方法,解析xml,创建xml,用列表字典的方式创建xml

解析xml

#coding=utf-8
from xml.dom.minidom import parse

print('-----------')
DOMTree = parse(r'E:\test.xml') #打开xml文件
booklist=DOMTree.documentElement #获取根节点
print(DOMTree.toxml()) #打印文件内容
print(booklist.toxml()) #打印文件内容
booklist.hasAttribute("type") #判断booklist节点是否包含type属性
booklist.getAttribute("type") #获取booklist节点的type属性的值
books=booklist.getElementsByTagName("book") #获取booklist节点下面的所有book节点
books[0].childNodes #获取book节点下所有的子节点,该子节点列表中包含了换行符[<DOM Text node "'\n\t\t'">, <DOM Element: title at 0x308cec8>, <DOM Text node "'\n\t\t'">, <DOM Element: author at 0x308cf10>, <DOM Text node "'\n\t\t'">, <DOM Element: pageNumber at 0x308cf58>, <DOM Text node "'\n\t'">]

d={}
for i in range(1,6,2): #该处从1开始,6结束,步长为2,时为了避开换行符
    tag_name=books[1].childNodes[i].tagName #获取books[1]下面第i个子节点标签
    d[tag_name]=books[1].childNodes[i].childNodes[0].data #获取books[1]下面第i个子节点标签的文本内容存入字典中
    
for k,v in d.items():
    print(k,v) #遍历打印字典
    
if books[0].hasChildNodes(): #判断books[0]下是否有子节点
    print('有子节点')

创建xml文件

#coding=utf-8
import xml.dom.minidom

doc=xml.dom.minidom.Document() #创建一个xml对象
print(doc)
root=doc.createElement('company') #创建一个根节点
root.setAttribute('information',u'公司信息') #给根节点增加一个属性
doc.appendChild(root) #将root节点添加到文档中

gloryroad=doc.createElement('gloryroad') #给根节点创建子节点,此时该子节点还未挂载在根节点下面
name=doc.createElement('name') #子节点下再创建子节点
name.appendChild(doc.createTextNode(u'天利公司')) #给name节点添加文本内容
ceo=doc.createElement('ceo') #创建新节点
ceo.appendChild(doc.createTextNode('王总')) #给节点添加文本内容

gloryroad.appendChild(name) #将name节点挂载到gloryroad节点下
gloryroad.appendChild(ceo) #将ceo节点挂载到gloryroad节点下
root.appendChild(gloryroad) #将gloryroad节点挂载到根节点下
print(doc.toxml())

fp=open('e:\\company.xml','w',encoding='utf-8') #创建并打开文件
doc.writexml(fp,indent='',addindent='\t',newl='\n',encoding='utf-8')
#将xml对象写入文件中,其中indent根节点缩进方式,addindent子节点缩进方式,newl新行的换行方式,encoding编码方式
fp.close

用列表字典的方式创建xml

#coding=utf-8
import xml.dom.minidom

doc=xml.dom.minidom.Document() #创建一个xml对象
print(doc)
root=doc.createElement('company') #创建一个根节点
root.setAttribute('information',u'公司信息') #给根节点增加一个属性
doc.appendChild(root) #将root节点添加到文档中

managerList=[{'name':'小明','age':18,'sex':'男'},
             {'name':'小红','age':17,'sex':'女'},
             {'name':'小王','age':19,'sex':'男'}]
             
for i in managerList:
    nodeManager=doc.createElement('Manager') #给根节点创建子节点
    nodeName=doc.createElement('name') #给Manager创建子节点
    nodeName.appendChild(doc.createTextNode(str(i['name']))) #给name节点添加文本内容
    nodeAge=doc.createElement('age')
    nodeAge.appendChild(doc.createTextNode(str(i['age'])))
    nodeSex=doc.createElement('sex')
    nodeSex.appendChild(doc.createTextNode(str(i['sex'])))
    nodeManager.appendChild(nodeName) #将子节点挂载在父节点上
    nodeManager.appendChild(nodeAge)
    nodeManager.appendChild(nodeSex)
    root.appendChild(nodeManager)
    
fp=open('e:\\company1.xml','w',encoding='utf-8')
doc.writexml(fp,indent='',addindent='\t',newl='\n',encoding='utf-8')
fp.close
上一篇:javascript精要(3)-动态加载脚本


下一篇:innerHTML 和 innerText