如何将xml文件中的属性名称和列值添加到Dictionary

时间:2014-06-20 07:08:54

标签: python

<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

2 个答案:

答案 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']