xml child-value extraction with python
Question: I have trouble extracting the attribute/value of element t0, t1, t2.

this is my initial attempt. I was hoping to assign the values in t0,t1,t2 into
the variables listed below, but I had no luck with that(started learning
python yesterday!) Anyone with an idea?

    
    
    from xml.dom import minidom
    xmldoc = minidom.parse('all.xml')
    
    Sensor0 = xmldoc.getElementsByTagName("t0")
    Sensor1 = xmldoc.getElementsByTagName("t1")
    Sensor2 = xmldoc.getElementsByTagName("t2")
    print(Sensor0)
    print(Sensor1)
    print(Sensor2)
    

this is what is stored in the variables - obviously not the values what I am
looking for

    
    
       [<DOM Element: t0 at 0x2fe1d00>]
       [<DOM Element: t1 at 0x2ff16c0>]
       [<DOM Element: t2 at 0x2ff92b0>]
    

here is my xml file

    
    
    <xml><data>
    <devicename>ALL4000</devicename>
    <n0>0</n0><t0>1.25</t0><min0> 0.00</min0><max0> 2.55</max0><l0>-55</l0><h0>150</h0><s0>102</s0>
    <n1>1</n1><t1>1.44</t1><min1> 2.32</min1><max1> 10487.04</max1><l1>-55</l1><h1>150</h1><s1>102</s1>
    <n2>2</n2><t2>1.81</t2><min2> 0.00</min2><max2> 2.55</max2><l2>-55</l2><h2>150</h2><s2>102</s2>
    <n3>3</n3><t3>-20480.00</t3><min3> 0.00</min3><max3> 5580.80</max3><l3>-55</l3><h3>150</h3><s3>0</s3>
    <n4>4</n4><t4>-20480.00</t4><min4> 40.96</min4><max4> 41943.04</max4><l4>-55</l4><h4>150</h4><s4>0</s4>
    <n5>5</n5><t5>-20480.00</t5><min5> 10.24</min5><max5> 0.08</max5><l5>-55</l5><h5>150</h5><s5>0</s5>
    <n6>6</n6><t6>-20480.00</t6><min6> 0.00</min6><max6>-20480.00</max6><l6>-55</l6><h6>150</h6><s6>0</s6>
    <n7>7</n7><t7>-20480.00</t7><min7> 0.00</min7><max7> 0.00</max7><l7>-55</l7><h7>150</h7><s7>0</s7>
    <n8>8</n8><t8>-20480.00</t8><min8> 336855.04</min8><max8> 1342177.28</max8><l8>-55</l8><h8>150</h8><s8>0</s8>
    <n9>9</n9><t9>-20480.00</t9><min9> 0.00</min9><max9> 0.00</max9><l9>-55</l9><h9>150</h9><s9>0</s9>
    <n10>10</n10><t10>-20480.00</t10><min10> 0.00</min10><max10> 0.00</max10><l10>-55</l10><h10>150</h10><s10>0</s10>
    <n11>11</n11><t11>-20480.00</t11><min11> 0.00</min11><max11> 0.00</max11><l11>-55</l11><h11>150</h11><s11>0</s11>
    <n12>12</n12><t12>-20480.00</t12><min12> 0.00</min12><max12> 0.00</max12><l12>-55</l12><h12>150</h12><s12>0</s12>
    <n13>13</n13><t13>-20480.00</t13><min13> 0.00</min13><max13> 0.00</max13><l13>-55</l13><h13>150</h13><s13>0</s13>
    <n14>14</n14><t14>-20480.00</t14><min14> 0.00</min14><max14> 0.00</max14><l14>-55</l14><h14>150</h14><s14>0</s14>
    <n15>15</n15><t15>-20480.00</t15><min15> 0.00</min15><max15> 0.00</max15><l15>-55</l15><h15>150</h15><s15>0</s15>
    <fn0>1</fn0><ft0>0</ft0><fs0>0</fs0>
    <fn1>2</fn1><ft1>0</ft1><fs1>0</fs1>
    <fn2>3</fn2><ft2>0</ft2><fs2>0</fs2>
    <fn3>4</fn3><ft3>0</ft3><fs3>0</fs3>
    <fn4>5</fn4><ft4>0</ft4><fs4>0</fs4>
    <fn5>6</fn5><ft5>0</ft5><fs5>0</fs5>
    <fn6>7</fn6><ft6>0</ft6><fs6>0</fs6>
    <fn7>8</fn7><ft7>0</ft7><fs7>0</fs7>
    <fn8>9</fn8><ft8>0</ft8><fs8>0</fs8>
    <fn9>10</fn9><ft9>0</ft9><fs9>0</fs9>
    <fn10>11</fn10><ft10>0</ft10><fs10>0</fs10>
    <fn11>12</fn11><ft11>0</ft11><fs11>0</fs11>
    <fn12>13</fn12><ft12>0</ft12><fs12>0</fs12>
    <fn13>14</fn13><ft13>0</ft13><fs13>0</fs13>
    <fn14>15</fn14><ft14>0</ft14><fs14>0</fs14>
    <fn15>16</fn15><ft15>0</ft15><fs15>0</fs15>
    <rn0>0</rn0><rt0>0</rt0>
    <rn1>1</rn1><rt1>0</rt1>
    <rn2>2</rn2><rt2>0</rt2>
    <rn3>3</rn3><rt3>0</rt3>
    <it0>248</it0><it1>255</it1><it2>255</it2><it3>255</it3><it4>128</it4><it5>1</it5><it6>255</it6><it7>255</it7>
    <date>28.07.2006</date><time>03:53:53</time><ad>1</ad><ntpsync>-1</ntpsync><i>10</i><f>0</f>
    <sys>18068255</sys><mem>24368</mem><fw>2.89</fw><dev>ALL4000</dev>
    <sensorx>5</sensorx><sensory>3</sensory>
    </data></xml>
    


Answer: I tried to answer you question in the following code with comments:

    
    
    from xml.dom import minidom                                                     
    
    # Parse the xml                                                                 
    xmldoc = minidom.parse('all.xml')                                               
    
    # Get all Elements with the name t0. This returns a list of Elements..          
    Sensor0Elm = xmldoc.getElementsByTagName('t0')                                  
    
    # The expectation is to only get one element, so I                               
    # grab the first one in the list                                                
    Sensor0Elm = Sensor0Elm[0]                                                      
    
    # The element can contain many nodes. The expectation is only                   
    # one node containing the data, so we grab the first node and                   
    # obtain the data.                                                              
    Sensor0 = Sensor0Elm.childNodes[0].data                                         
    
    # Finally we convert the unicode data into a floating point number              
    Sensor0 = float(Sensor0)
    

You can do this same thing in a loop for all of the Sensor data t0, t1, and
t2.

