#coding=utf-8 #經過minidom解析xml文件 import xml.dom.minidom as xmldom import os ''' XML文件讀取 <?xml version="1.0" encoding="utf-8"?> <catalog> <maxid>4</maxid> <login username="pytest" passwd='123456'>dasdas <caption>Python</caption> <item id="4"> <caption>測試</caption> </item> </login> <item id="2"> <caption>Zope</caption> </item> </catalog> ''' ''' x_path="E:\\doc\\項目文檔\\廣東\\拓撲圖\\test.xml" xmlfilepath = os.path.abspath(x_path) print ("xml文件路徑:", xmlfilepath) # 獲得文檔對象 domobj = xmldom.parse(xmlfilepath) print("xmldom.parse:", type(domobj)) # 獲得元素對象 elementobj = domobj.documentElement print ("domobj.documentElement:", type(elementobj)) #得到子標籤 subElementObj = elementobj.getElementsByTagName("login") print ("getElementsByTagName:", type(subElementObj)) print (len(subElementObj)) # 得到標籤屬性值 print (subElementObj[0].getAttribute("username")) print (subElementObj[0].getAttribute("passwd")) #區分相同標籤名的標籤 subElementObj1 = elementobj.getElementsByTagName("caption") for i in range(len(subElementObj1)): print ("subElementObj1[i]:", type(subElementObj1[i])) print (subElementObj1[i].firstChild.data) #顯示標籤對之間的數據 ''' x_path="E:\\doc\\項目文檔\\廣東\\拓撲圖\\index.do.xml" nodes=list() xmlfilepath = os.path.abspath(x_path) def findNodeIndex(node): for i in range(len(nodes)): if(nodes[i]==node): return str(i) # +":"+nodes[i] print ("xml文件路徑:", xmlfilepath) # 獲得文檔對象 domobj = xmldom.parse(xmlfilepath) print("xmldom.parse:", type(domobj)) # 獲得元素對象 elementobj = domobj.documentElement #print ("domobj.documentElement:", type(elementobj)) subElementObj = elementobj.getElementsByTagName("data") print(len(subElementObj)) for i in range(len(subElementObj)): if(subElementObj[i].getAttribute("type")=='twaver.Node'): sub2=subElementObj[i].getElementsByTagName("p") for j in range(len(sub2)): if(sub2[j].getAttribute("n")=='name'): node=sub2[j].firstChild.data.replace('...','') print("{name:'",node,"',draggable: true,},") nodes.append(node) print("nodes len:",len(nodes)) for i in range(len(subElementObj)): if(subElementObj[i].getAttribute("type")=='twaver.Link'): sub3=subElementObj[i].getElementsByTagName("c") for j in range(len(sub3)): node=sub3[j].firstChild.data.replace('...','') iNode=findNodeIndex(node) if(sub3[j].getAttribute("n")=='aNode'): #print(sub3[j].firstChild.data ,' ',iNode, end='') print('{source:',iNode, end='') elif(sub3[j].getAttribute("n")=='zNode'): #print(sub3[j].firstChild.data,' ',iNode) print(",target:",iNode,"},")