看板 Python 關於我們 聯絡資訊
※ 引述《CHRyo (絕體絕命自由客)》之銘言: : 有些xml檔是用來表示一顆樹的 : 假設其中一個檔名是a.xml : <Schedule size="9"> : - <Node Address="1" MoreToGo="2"> : <Forward>2</Forward> : <Forward>3</Forward> : </Node> : <Node Address="2" MoreToGo="0" /> : - <Node Address="3" MoreToGo="3"> : <Forward>4</Forward> : <Forward>5</Forward> : <Forward>6</Forward> : </Node> : <Node Address="4" MoreToGo="0" /> : - <Node Address="5" MoreToGo="2"> : <Forward>7</Forward> : <Forward>8</Forward> : </Node> : <Node Address="6" MoreToGo="0" /> : <Node Address="7" MoreToGo="0" /> : <Node Address="8" MoreToGo="0" /> : </Schedule> : 畫成圖形就是 : 1 : / \ : 2 3 : / | \ : 4 5 6 : / \ : 7 8 : 現在想要把xml檔抓出來表示成一個list : [[], [2,3],[] ,[4,5,6], [], [7,8], [], [], []] : 也就是list[1]=[2,3] : list[3]=[4,5,6] 這樣 : 我用xml.dom.minidom去parse a.xml : 也會用getElementsByTagName抓回NodeList : ============================================================= : from xml.dom import minidom : dom = minidom.parse('a.xml') : list = dom.getElementsByTagName('Node') : for x in list: : addr = x.getAttribute('Address') : forwards = x.getElementsByTagName('Forward') 不太懂問題在那,你的list存的不就是要列出每個node他的child是那些 = = 這要什麼演算法? 找出所有Node的工作dom都做掉了 d = {} for x in list: addr = x.getAttribute('Address') forwards = x.getElemensByTagName('Forward') <-- 列出所有x的child d[addr] = [k.name for k in forwards] : ============================================================= : 可是寫到這就卡住了... : 不知道要怎麼把抓進來的addr跟forward表示成那個list的樣子 : 所以又來請高手幫忙一下 : 謝謝 m(_ _)m -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.96.100.65 ※ 編輯: Lucemia 來自: 140.96.100.65 (07/05 10:11)
CHRyo:痾..主要是我python不熟不知道該怎麼配對addr跟它的forwards 07/05 10:21
CHRyo:突然覺得我真的很白痴.....感謝 07/05 10:22
CHRyo:痾..exception:Element instance has no attribute "name" 07/05 10:27
CHRyo:直接用k for k in forwrads的話又會變成ref... 07/05 10:28
CHRyo:有什麼funtion可以抓name出來的嗎? data跟name都不行 @@|| 07/05 10:29
CHRyo:用k.firstChild.data就OK了 07/05 13:20
softwind:... sorry 我完全會錯意... (呆) 07/06 22:05