2013-09-08 2 views
0

Я разборе файла XML с питоном в список и словарь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 

ответ

0

TestListCreator над тестами в классе получает элементы Cdyn, TDP и SICC, которые не имеет названия атрибутов.

+0

Я не понимаю при запуске, я получаю имена каждого теста – user2740068

+0

может ли кто-нибудь предложить решение? – user2740068