2016-04-15 12 views
0

サイト:http://w1.weather.gov/xml/current_obs/index.xml;現在の地方の気象観測値を与える緯度/経度座標でタグ付けされた米国の気象観測所の指標です。ファイル内で2257局の、それぞれ10ラインセグメントは、次のようになります。タスク担当者からの大きなXMLインデックスの検索と解析

<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> 

目標は、その後、ダウン2行をドロップし、最も近い緯度/経度の一致を検索するには、Androidの携帯電話のGPSや地図ルート情報を使用することですそのRSSリンクを解析してTTSサービスに渡すことができます。運転中に電話が「ハンズフリー」のために自動化されているためです。タスク担当者からは、通常、グローバルvar%HTTPDを読み込んでそこから解析するサイトが「取得」されますが、ファイルは可変サイズの制限をはるかに超えています。誰かが適切な回避策を持っていますか?

答えて

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()); 

そして、あなたのInputStreamを取得し、同様にSAXパーサを使用してそれを解析:

handlerHandlerBaseクラスを拡張するクラスです
// get a new SAXParser 
SAXParser parser = factory.newSAXParser(); 
// parse the stream 
parser.parse(is, handler); 

SAXパーサーはストリームベースのXMLパーサーです。 SAX Parserにはたくさんの例があります。ちょうどそれらのGoogle。

+0

NWS XMLインデックスファイルをまったく使用するのは簡単な方法です。国の天気予報を照会するGoogle Mapsの意向。各場所はsrh.noaa.gov/xxxにリンクしています。ここで、その駅の3文字の表記は、標準のRSSリンク( 'http://forecast.weather.gov/product.php?site=NWS&issuedby= HGX&product = AFD&format = CI&version = 1&glossary = 0 '(ここでHGXはヒューストン/ガルベストン駅の送信機を示しています)地図の場所情報からそのリンクをキャプチャする方法を調べています。私のやり方を教えてください。 – ManagementCritic

+0

申し訳ありません。 RSSリンクのテキスト全体を表示する方法を知らない。 – ManagementCritic

+0

あなたのリンクを扱うSAXパーサを書く必要があります。その結果、lattitute/longitudeなどのステーションの配列が作成されます。その配列に基づいて、最も近いものを選択することができます。 – barmaley

関連する問題