Usando Java para extraer datos de la API de Google Weather

He estado jugando un poco con documentos xml y Java un poco recientemente, pero no he tenido absolutamente ninguna suerte con la API de Google Weather.

Supongamos que estoy tratando de hacer un objeto simple para almacenar la temperatura actual y pronosticar la temperatura para mañana, ¿cómo haría esto?

http://www.google.com/ig/api?weather=02110 Es el ejemplo de trabajo para mi ciudad natal.

Gracias

Usando este código:

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

Obteniendo toneladas de punteros nulos, no importa lo que haga.

Respuesta 1

He comenzado a diferenciar dos imágenes contando el número de píxeles diferentes usando un algoritmo simple: private int returnCountOfDifferentPixels (String pic1, String pic2) {Bitmap i1 ...

He estado atrapado en este problema durante unos meses y todavía no puedo hacerlo funcionar. ¿Cómo comienzo a comunicarme, enviar comandos e imprimir a una impresora de recibos que está conectada a través de USB?

No sé si es una buena pregunta. EJB 3.1 ofrece la posibilidad de etiquetar los métodos con asychronous. Me pregunto si la llamada asíncrona dura más que el hilo del servlet o si el hilo del servlet ...

Codifiqué un servidor multiproceso y puede manejar muchos clientes que se conectan a la vez. El único problema es que solo se comunica con ese cliente específico. Aquí hay un ejemplo de lo que estoy tratando de lograr: ...