作者Lucemia (生の直感、死の予感)
看板Python
标题Re: [问题] 再来请教一个问题
时间Thu Jul 5 10:10:09 2007
※ 引述《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)
1F:推 CHRyo:痾..主要是我python不熟不知道该怎麽配对addr跟它的forwards 07/05 10:21
2F:→ CHRyo:突然觉得我真的很白痴.....感谢 07/05 10:22
3F:推 CHRyo:痾..exception:Element instance has no attribute "name" 07/05 10:27
4F:→ CHRyo:直接用k for k in forwrads的话又会变成ref... 07/05 10:28
5F:→ CHRyo:有什麽funtion可以抓name出来的吗? data跟name都不行 @@|| 07/05 10:29
6F:推 CHRyo:用k.firstChild.data就OK了 07/05 13:20
7F:→ softwind:... sorry 我完全会错意... (呆) 07/06 22:05