使用etree指定具有相同名称的多个根的xml解析

时间:2014-06-20 20:29:18

标签: xml parsing xml-parsing elementtree xml.etree

我使用xml.etree.ElementTree来解析表单中的xml文件 -

<element> 
   <status>OK</status> 
   <duration> 
    <value>340110</value> 
    <text>3 jours 22 heures</text> 
   </duration> 
   <distance> 
    <value>1734542</value> 
    <text>1 735 km</text> 
   </distance> 
  </element> 

然后我将时间值分开并比较它们以获得最小的可能值。但是,我不知道如何做到这一点,而不是最终得到距离值,这会弄乱我的数据集。这是我到目前为止在值root -

下获取任何内容的代码
import xml.etree.ElementTree as ET
times=[]
for i in htmlSource:
    root=ET.fromstring(i)
    for value in root.iter('value'):
        times.append(value.text)

有没有办法可以将其修改为仅在持续时间而不是距离下获取值?提前谢谢。

1 个答案:

答案 0 :(得分:0)

我实际上设法弄清了这个。我还需要保持值的索引与原始数据保持一致,这很困难,因为任何时候元素的状态发生变化都不会有“&#39;值”。部分和所有后续值的索引将从缺席中增加。这是我对这个问题和原始问题的解决方案。

for i in htmlSource: 
    root=ET.fromstring(i) #parses the data
    for element in root.iter('element'):
        if element[0].text == 'OK'
            Temp=element[1][0].text #finds the time value
            times.append(Temp) #adds the time value to a list
        else:
            times.append(0)

元素[1] [0]表示第一个孩子&#39;指定的元素的第二个根,即所需的值root,.text为我提供该根的文本内容。元素[0]是状态,即元素下的第一个根。