0

网站:http ://w1.weather.gov/xml/current_obs/index.xml ;是美国气象站的索引,标有纬度/经度坐标,可提供当前当地的天气观测。在文件中的 2257 个站点中,每 10 个线段如下所示:

<station>
    <station_id>PADK</station_id>
    <state>AK</state>
    <station_name>Adak Island, Adak Airport</station_name>
    <latitude>51.87778</latitude>
    <longitude>-176.64583</longitude>
    <html_url>http://weather.noaa.gov/weather/current/PADK.html</html_url>
    <rss_url>http://weather.gov/xml/current_obs/PADK.rss</rss_url>
    <xml_url>http://weather.gov/xml/current_obs/PADK.xml</xml_url>
</station>

目标是使用 android 手机的 GPS 和 Maps 路线信息来搜索最近的纬度/经度匹配,然后下拉 2 行并使用该 RSS 链接解析并传递给 TTS 服务;因为手机正在自动驾驶,以提供“免提”体验。从 Tasker 通常会“获取”加载全局 var %HTTPD 并从那里解析的站点,但文件远远超出了可变大小限制。有没有人有合适的解决方法?

4

1 回答 1

0

你应该HttpURLConnection像这样使用:

URL url = new URL("http://w1.weather.gov/xml/current_obs/index.xml");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
InputStream in = new BufferedInputStream(urlConnection.getInputStream());

然后使用 SAX Parser 获取InputStream并解析它,例如:

 // get a new SAXParser
 SAXParser parser = factory.newSAXParser();
 // parse the stream
 parser.parse(is, handler);

你的课在哪里handler扩展HandlerBase课。

SAX Parser 是基于流的 XML 解析器。周围有很多 SAX Parser 的例子。只是谷歌他们。

于 2016-04-15T08:42:30.963 回答