0

我正在使用 python 将 XML 文件解析为列表和字典

XML 代码:

    <?xml version="1.0"?>
<TP name="TP03_WW35_13">
    <Class>
        <CDYN>
            <test name= "IA CDYN" PP="IA" Workload="PV">
                <Parameter name="temprature">
                    <value>100</value>
                </Parameter>
                <Parameter name="voltages">
                    <value>0.85</value>
                    <value>1.00</value>
                    <value>1.10</value>
                </Parameter>
                <Parameter name="Freq">
                    <value>0.8</value>
                    <value>1.2</value>
                </Parameter>
            </test>
            <test name= "GT CDYN" PP="GT" Workload="PV">
                <Parameter name="temprature">
                    <value>101</value>
                </Parameter>
                <Parameter name="voltages">
                    <value>0.85</value>
                </Parameter>
                <Parameter name="Freq">
                    <value>0.8</value>
                    <value>1.2</value>
                    <value>1.6</value>
                </Parameter>
            </test>
        </CDYN>
        <TDP>
            <test name="SDP" Workload="3Dmark Vantage GT1">
                <Parameter name="temprature">
                    <value>100</value>
                </Parameter>
            </test>
        </TDP>
        <Sicc>
            <test name="SA SICC" PP="SA">
                <Parameter name="temprature">
                    <value>102</value>
                </Parameter>
                <Parameter name="voltages">
                    <value>0.85</value>
                    <value>1.00</value>
                </Parameter>
            </test>
        </Sicc>
    </Class>
</TP>
  1. 起初,我想将测试作为对我有用的列表与我制作的测试列表创建者一起参加

  2. 基于该列表,我想创建一个函数,该函数将从列表中获取测试名称并从其子项创建字典和列表

我希望它看起来的示例输出:

TestParam { pp:IA, WL:PV, tempratures:[10,20,30],Voltages:[0.8,1.0,1.2], freq: [8,12,16]}

发生的事情是我可以看到有 3 个值但只得到第一个

我的代码:

def TestListCreator (root):
    TestList = []
    for Class in root.find('Class'):
        for Tests in Class:
           # TestList.append(Class.tag +Tests.attrib['name'] )
            TestList.append(Tests.attrib['name'] )
    print (TestList)
    return TestList

def main():
    import xml.etree.ElementTree as ET
    XML = ET.parse('1.xml') #parse the xml file into an elementtre
    root = XML.getroot()
    print root.tag + "=" + root.attrib['name']
    TestList = TestListCreator(root)
    print (TestList)


##    for country in root.findall(".*/CDYN/test[@name='IA CDYN']/Parameter"):
##    #for country in root.findall(".*/CDYN/test[@name=]/Parameter[@name=temprature]"):
##     rank = country.find('value').text
##     name = country.get('name')
##     print name, rank


    Vlist = []
    for country in root.findall(".*/CDYN/test[@name='IA CDYN']/Parameter"):
    #for country in root.findall(".*/CDYN/test[@name=]/Parameter[@name=temprature]"):
        #for Z in country.find('value'):
         #Vlist.append(country.attrib[])
         rank = country.find('value').text
         name = country.get('name')
         print name,rank

    print Vlist
4

1 回答 1

0

TestListCreator 对 Tests in Class 的迭代获得了没有名称属性的元素 CDYN、TDP 和 Sicc。

于 2013-09-08T21:03:48.953 回答