0

以下 hpricot 代码在我的两台机器(Vista 和一台 Ubuntu 服务器)上成功提取了 XML 中的 STPeriod,但在另一台 Ubuntu 笔记本电脑上失败了。所有机器都有Hpricot v0.82

有任何想法吗?完全被难住了。

Hpricot代码:

  (doc/"WeatherFeed/Location/WxShortTerm/STPeriod").each do |ham_forecast|

XML 文件

<?xml version="1.0" encoding="ISO-8859-1" ?>
<WeatherFeed>
  <Location ID="EINN" name="Shannon Airport" state="" country="IE" tz="0" tzname="GMT">
    <Astro>
      <AstroPeriod Day="WED" Date="2009-12-16" Sunrise="8:41 AM GMT" Sunset="4:20 PM GMT" Moonrise="9:03 AM GMT" Moonset="4:02 PM GMT" MoonIllum="4%" MoonAge="0" MoonPhase="Waxing Crescent Moon" MoonIcon="1"/>
      <AstroPeriod Day="THU" Date="2009-12-17" Sunrise="8:42 AM GMT" Sunset="4:20 PM GMT" Moonrise="9:46 AM GMT" Moonset="5:05 PM GMT" MoonIllum="10%" MoonAge="1" MoonPhase="Waxing Crescent Moon" MoonIcon="1"/>
    </Astro>
    <WxOb StationID="EINN" TempC="7" TempF="45" ApparentC="5" ApparentF="41" DewPointC="6" DewPointF="43" RelativeHumidity="93" WindSpeedKnots="8" WindSpeedMPH="9" WindDirection="320" WindDirectionEng="NW" WindGustKnots="0" WindGustMPH="0" PressureMB="1013" PressureIN="29.88" Wx="Mostly Cloudy" Icon="mcloudyn.gif" Visibility="&gt;10km" VisibilityKM="16.09" VisibilityMI="10" ReportEpoch="1260999000" ReportDate="2009-12-16 21:30 UTC"/>
    <WxShortTerm ID="EINN">
      <STPeriod interval="1" Epoch="1261018800" Day="Thu" Date="2009-12-17" Time="03:00" Wx="Overcast" Icon="cloudyn.gif" TempC="6" TempF="42" Pop="0" QPFmm="0" QPFin="0" DewPointC="4.4" DewPointF="40" RelativeHumidity="92" WindSpeedKnots="12" WindSpeedMPH="14" WindDirectionEng="NE"/>
      <STPeriod interval="2" Epoch="1261029600" Day="Thu" Date="2009-12-17" Time="06:00" Wx="Mostly Cloudy" Icon="mcloudyn.gif" TempC="4" TempF="39" Pop="0" QPFmm="0" QPFin="0" DewPointC="3" DewPointF="37" RelativeHumidity="93" WindSpeedKnots="11" WindSpeedMPH="13" WindDirectionEng="NE"/>
      <STPeriod interval="3" Epoch="1261040400" Day="Thu" Date="2009-12-17" Time="09:00" Wx="Partly Cloudy" Icon="pcloudy.gif" TempC="2" TempF="36" Pop="0" QPFmm="0" QPFin="0" DewPointC="1.4" DewPointF="35" RelativeHumidity="95" WindSpeedKnots="10" WindSpeedMPH="12" WindDirectionEng="NE"/>
      <STPeriod interval="4" Epoch="1261051200" Day="Thu" Date="2009-12-17" Time="12:00" Wx="Partly Cloudy" Icon="pcloudy.gif" TempC="4" TempF="38" Pop="0" QPFmm="0" QPFin="0" DewPointC="1.6" DewPointF="35" RelativeHumidity="87" WindSpeedKnots="12" WindSpeedMPH="14" WindDirectionEng="NE"/>
      <STPeriod interval="5" Epoch="1261062000" Day="Thu" Date="2009-12-17" Time="15:00" Wx="Mostly Cloudy" Icon="mcloudy.gif" TempC="3" TempF="37" Pop="0" QPFmm="0" QPFin="0" DewPointC="1" DewPointF="34" RelativeHumidity="87" WindSpeedKnots="12" WindSpeedMPH="14" WindDirectionEng="NE"/>
      <STPeriod interval="6" Epoch="1261072800" Day="Thu" Date="2009-12-17" Time="18:00" Wx="Mostly Cloudy" Icon="mcloudyn.gif" TempC="3" TempF="37" Pop="0" QPFmm="0" QPFin="0" DewPointC="0.9" DewPointF="34" RelativeHumidity="89" WindSpeedKnots="12" WindSpeedMPH="14" WindDirectionEng="NE"/>
      <STPeriod interval="7" Epoch="1261083600" Day="Thu" Date="2009-12-17" Time="21:00" Wx="Mostly Cloudy" Icon="mcloudyn.gif" TempC="2" TempF="36" Pop="0" QPFmm="0" QPFin="0" DewPointC="0.2" DewPointF="32" RelativeHumidity="88" WindSpeedKnots="11" WindSpeedMPH="13" WindDirectionEng="NE"/>
      <STPeriod interval="8" Epoch="1261094400" Day="Fri" Date="2009-12-18" Time="00:00" Wx="Partly Cloudy" Icon="pcloudyn.gif" TempC="-0" TempF="32" Pop="0" QPFmm="0" QPFin="0" DewPointC="-2.1" DewPointF="28" RelativeHumidity="87" WindSpeedKnots="10" WindSpeedMPH="11" WindDirectionEng="NE"/>
    </WxShortTerm>
  </Location>
</WeatherFeed>
4

3 回答 3

1

由于我在这里或其他地方找不到任何启发,我从 Hpricot 切换到 Nokigiri,它现在可以在所有机器上完美运行。API 几乎完全兼容,因此切换只需不到 10 分钟。此外,我感觉 Nokogiri 正在得到更积极的维护,尽管它不依赖于 libxml2。

于 2009-12-22T11:06:49.060 回答
0

检查文件在每台机器上是否具有相同的编码。也许有什么东西在转移中被弄脏了?

在每台机器上尝试 linux 命令file -i myfile.txt,看看是否得到相同的答案。

于 2009-12-21T00:25:40.053 回答
0

Hpricot 搜索实际上不应该是:

(doc/"/WeatherFeed/Location/WxShortTerm/STPeriod")

注意额外的“/”

此外,当我遇到 Hpricot 无法找到元素的错误时,这是​​因为解析错误/格式错误的文档。将 Hpricot 文档写入文本文件很方便,这样您就可以查看它是否在做任何奇怪的事情,例如在不应该的地方关闭标签。(我想知道该链接是否是您看到的错误?)。

于 2010-01-05T10:04:46.643 回答