<table name="table1">
<col>Comp1</col>
<col>Compo4_</col>
<col>Dire3</col>
<col>Attri4s</col>
<col>Condition</col>
</table>
<table name="table2">
<col>Compo4_</col>
<col>Compon7</col>
<col>Direc9</col>
</table>
我有一个上面给出的xml文件。我想将tablename的值和Compo4_的col no添加到一个dictionary.i尝试下面的代码。但每次我在coltext中获得第一列值。
dic={}
for node in doc.getElementsByTagName('table'):
name = node.getAttribute('name')
value=0
for subnode in node.childNodes:
if subnode.nodeType == node.ELEMENT_NODE and subnode.tagName == "col":
colvalue=colvalue+1
coltext = subnode.getElementsByTagName('col')
if coltext=='Compo4_':
componentIddic[table_name]=colvalue
请不要建议我使用Elementree。因为我们整个实现我们正在使用minidom
答案 0 :(得分:1)
该coltext似乎与您期望的不同。尝试使用firstChild属性。
coltext = subnode.firstChild.nodeValue
我的结果是
{'table2': 6, 'table1': 2}
答案 1 :(得分:0)
您可以简单地使用xmltodict模块,使用xmltodict,您无需手动将xml转换为dict。 xmltodict会自动为您提供。
>>> import xmltodict
>>> s = xmltodict.parse('<table name="table1">
<col>Comp1</col>
<col>Compon4_</col>
<col>Dire3</col>
<col>Attri4s</col>
<col>Condition</col>
</table>')
>>>for i in s:
print s['table']['col']
>>>[u'Comp1', u'Compon4_', u'Dire3', u'Attri4s', u'Condition']