使用Python解析XML-访问值

时间:2019-02-03 21:14:31

标签: python xml parsing

我最近有了RaspberryPi,并且已经开始学习Python。首先,我想解析一个XML文件,并通过untangle库进行此操作。

我的XML如下:

<?xml version="1.0" encoding="utf-8"?>
<weatherdata>
  <location>
    <name>Katherine</name>
    <type>Administrative division</type>
    <country>Australia</country>
    <timezone id="Australia/Darwin" utcoffsetMinutes="570" />
    <location altitude="176" latitude="-14.65012" longitude="132.17414" geobase="geonames" geobaseid="7839404" />
  </location>
  <sun rise="2019-02-04T06:33:52" set="2019-02-04T19:16:15" />
  <forecast>
    <tabular>
      <time from="2019-02-04T06:30:00" to="2019-02-04T12:30:00" period="1">
        <!-- Valid from 2019-02-04T06:30:00 to 2019-02-04T12:30:00 -->
        <symbol number="9" numberEx="9" name="Rain" var="09" />
        <precipitation value="1.8" />
        <!-- Valid at 2019-02-04T06:30:00 -->
        <windDirection deg="314.8" code="NW" name="Northwest" />
        <windSpeed mps="3.3" name="Light breeze" />
        <temperature unit="celsius" value="26" />
        <pressure unit="hPa" value="1005.0" />
      </time>
      <time from="2019-02-04T12:30:00" to="2019-02-04T18:30:00" period="2">
        <!-- Valid from 2019-02-04T12:30:00 to 2019-02-04T18:30:00 -->
        <symbol number="9" numberEx="9" name="Rain" var="09" />
        <precipitation value="2.3" />
        <!-- Valid at 2019-02-04T12:30:00 -->
        <windDirection deg="253.3" code="WSW" name="West-southwest" />
        <windSpeed mps="3.0" name="Light breeze" />
        <temperature unit="celsius" value="29" />
        <pressure unit="hPa" value="1005.0" />
      </time>
    </tabular>
  </forecast>
</weatherdata>

由此,我希望能够打印出from元素的to<time>属性以及其子节点{ {1}}

如果我运行以下Python脚本,则可以正确打印出温度值:

value

但如果我运行

<temperature>

我得到一个错误:

for forecast in data.weatherdata.forecast.tabular.time:
  print (forecast.temperature['value'])

谁能建议我如何正确访问这些值?

1 个答案:

答案 0 :(得分:0)

forecast.time应该是一个列表,因为它确实有多个值,每个<time>节点一个。

您是否希望forecast.time['from']自动聚合该数据?