【问题标题】:Specifying xml parsing with multiple roots having the same name using etree使用 etree 指定具有多个同名根的 xml 解析
【发布时间】:2014-06-20 20:29:18
【问题描述】:

我正在使用 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> 

然后我分离出时间值并比较它们以获得最小的可能值。但是,我不确定如何在不最终获得距离值的情况下做到这一点,这会弄乱我的数据集。这是我到目前为止用于获取根值下的任何内容的代码-

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)

有没有办法可以修改它以仅获取持续时间而不是距离下的值?提前谢谢你。

【问题讨论】:

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


    【解决方案1】:

    我实际上设法弄清楚了这一点。我还需要使值的索引与原始数据保持一致,这很困难,因为任何时候元素的状态发生变化时都不会出现“值”部分,并且所有后续值的索引都会因缺少而增加.这是我对那个问题和我原来的问题的解决方案。

    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)
    

    element[1][0] 表示指定元素的第二个根的第一个“子”,这是所需的值根,而 .text 为我提供了该根的文本内容。 element[0] 是状态,元素下的第一个根。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-19
      • 2012-02-01
      • 2014-03-27
      • 1970-01-01
      • 1970-01-01
      • 2015-06-26
      • 2019-09-18
      • 1970-01-01
      相关资源
      最近更新 更多