python從XML裏取數,遍歷等

#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,"},")
相關文章
相關標籤/搜索