2012-05-07 12 views
0

最近私はxml文書とJavaで少し遊んでいましたが、Google天気APIを使用することは絶対にありませんでした。Javaを使用してGoogleの天気APIからデータを抽出する

私は現在の温度を保存する単純なオブジェクトを作成しようとしていて、明日のための一時的な温度を予測しようとしているとします。

http://www.google.com/ig/api?weather=02110私の故郷の都市の実例です。

おかげで、このコードを使用して

:どんなに私は何をすべきかヌルポインタの

public static final String[] xmlLoader(){ 
    String xmlData[] = new String[2]; 
    try { 
     URL googleWeatherXml = new URL("http://www.google.com/ig/api?weather=02110"); 
     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder db = dbf.newDocumentBuilder();  
     Document doc = db.parse(googleWeatherXml.openStream()); 

     // normalize text representation 
     doc.getDocumentElement().normalize(); 
     NodeList listOfWeek = doc.getElementsByTagName(""); 

      Node firstWeekNode = listOfWeek.item(dateCounter-1); 
      int totalWeeks = listOfWeek.getLength(); 


      //Break xml file into parts, then break those parts down int an array by passing individual elements to srtings 
      if(firstWeekNode.getNodeType() == Node.ELEMENT_NODE){ 
       Element firstWeekElement = (Element)firstWeekNode; 
       //------- 
       NodeList dateList = firstWeekElement.getElementsByTagName("date"); 
       Element dateElement = (Element)dateList.item(0); 

       NodeList textDateList = dateElement.getChildNodes(); 
       xmlData[0]= (((Node)textDateList.item(0)).getNodeValue().trim()).toString(); 

       //------- 
       NodeList riddleList = firstWeekElement.getElementsByTagName("riddle"); 
       Element riddleElement = (Element)riddleList.item(0); 

       NodeList textRiddleList = riddleElement.getChildNodes(); 
       xmlData[1]= (((Node)textRiddleList.item(0)).getNodeValue().trim()).toString(); 

       //---- 
       NodeList lWSList = firstWeekElement.getElementsByTagName("lastWeekSolution"); 
       Element ageElement = (Element)lWSList.item(0); 

       NodeList textLWSList = ageElement.getChildNodes(); 
       xmlData[2]= (((Node)textLWSList.item(0)).getNodeValue().trim()).toString(); 

       //------ 
      }//end of if clause 

    } 
    catch(MalformedURLException f){System.err.println(f.getMessage()); } 
    catch(NullPointerException npe){ 
     System.out.println("The Weather Data you searched for is incorrect or does not yet exist, try again. "); 
     String s[] = {" ", " "}; 
     main(s); 
    } 

    catch (SAXParseException err) { 
    System.out.println ("** Parsing error" + ", line " 
     + err.getLineNumber() + ", uri " + err.getSystemId()); 
    System.out.println(" " + err.getMessage()); 

    } 
    catch (SAXException e) { 
    Exception x = e.getException(); 
    ((x == null) ? e : x).printStackTrace(); 

    }catch (Throwable t) { 
    t.printStackTrace(); 
    } 
    return xmlData; 
} 

取得トン、。

+2

エラーは何ですか? – UVM

+1

いくつかのコードを表示できますか? – Daan

+0

コードが追加されました。エラーが何であるかを見せたいだけでした。 –

答えて

1

あなたが.getElementsByTagName()を呼び出すと、あなたはあなたが戻って取得値にガードを配置する必要があります。

NodeList dateList = firstWeekElement.getElementsByTagName("date"); 
if (datelist != null) { 
    Element dateElement = (Element)dateList.item(0); 

エトセトラ。

更新

今、私はXMLを見ていることを、私は<日>要素が存在しないことを確認。だから、dateListはnullです。あなたは<forecast_information>と<の都市>のような要素を探したいと思っています。

NodeList forecasts = firstWeekElement.getElementsByTagName("forecast_information"); 
if (forecasts != null) { 
    Element forecastElement = (Element)forecasts.item(0); 
関連する問題