Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
238 L’art du développement Android
Traitement des réponses
La réponse que l’on obtient est dans un certain format – HTML, XML, JSON, etc. – et
c’est à nous, bien sûr, de choisir l’information qui nous intéresse pour en tirer quelque
chose d’utile. Dans le cas de WeatherDemo, nous voulons extraire l’heure de la prévision,
la température et l’icône (qui représente les conditions météorologiques) afin de nous en
servir pour produire une page HTML.
Android fournit :
● trois analyseurs XML, l’analyseur DOM classique du W3C (org.w3c.dom), un analyseur
SAX (org.xml.sax) et l’analyseur pull présenté au Chapitre 19 ;
● un analyseur JSON (org.json).
Lorsque cela est possible, vous pouvez bien sûr utiliser du code Java tiers pour prendre en
charge d’autres formats – un analyseur RSS/Atom, par exemple. L’utilisation du code tiers
a été décrite au Chapitre 21.
Pour WeatherDemo, nous utilisons l’analyseur DOM du W3C dans notre méthode buildForecasts() :
void buildForecasts(String raw) throws Exception {
DocumentBuilder builder =
DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc =
builder.parse(new InputSource(new StringReader(raw)));
NodeList forecastList =
doc.getElementsByTagName("forecast_conditions");
for (int i = 0; i < forecastList.getLength(); i++) {
Element currentFore = (Element) forecastList.item(i);
// Retrouvons le jour de la semaine
String day =currentFore.getElementsByTagName("day_of_week")
.item(0).getAttributes()
.item(0).getNodeValue();
String lowTemp = currentFore.getElementsByTagName("low")
.item(0).getAttributes()
.item(0).getNodeValue();
String highTemp = currentFore.getElementsByTagName("high")
.item(0).getAttributes()
.item(0).getNodeValue();
String icon = currentFore.getElementsByTagName("icon")
.item(0).getAttributes()
.item(0).getNodeValue();
Forecast f = new Forecast();
f.setDay(day);
f.setLowTemp(lowTemp);
f.setHighTemp(highTemp);
f.setIcon(icon);
forecasts.add(f);
}
}
Livre Android.book Page 238 Dimanche, 8. novembre 2009 12:23 12
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
238 L’art du développement Android
Traitement des réponses
La réponse que l’on obtient est dans un certain format – HTML, XML, JSON, etc. – et
c’est à nous, bien sûr, de choisir l’information qui nous intéresse pour en tirer quelque
chose d’utile. Dans le cas de WeatherDemo, nous voulons extraire l’heure de la prévision,
la température et l’icône (qui représente les conditions météorologiques) afin de nous en
servir pour produire une page HTML.
Android fournit :
● trois analyseurs XML, l’analyseur DOM classique du W3C (org.w3c.dom), un analyseur
SAX (org.xml.sax) et l’analyseur pull présenté au Chapitre 19 ;
● un analyseur JSON (org.json).
Lorsque cela est possible, vous pouvez bien sûr utiliser du code Java tiers pour prendre en
charge d’autres formats – un analyseur RSS/Atom, par exemple. L’utilisation du code tiers
a été décrite au Chapitre 21.
Pour WeatherDemo, nous utilisons l’analyseur DOM du W3C dans notre méthode buildForecasts() :
void buildForecasts(String raw) throws Exception {
DocumentBuilder builder =
DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc =
builder.parse(new InputSource(new StringReader(raw)));
NodeList forecastList =
doc.getElementsByTagName("forecast_conditions");
for (int i = 0; i < forecastList.getLength(); i++) {
Element currentFore = (Element) forecastList.item(i);
// Retrouvons le jour de la semaine
String day =currentFore.getElementsByTagName("day_of_week")
.item(0).getAttributes()
.item(0).getNodeValue();
String lowTemp = currentFore.getElementsByTagName("low")
.item(0).getAttributes()
.item(0).getNodeValue();
String highTemp = currentFore.getElementsByTagName("high")
.item(0).getAttributes()
.item(0).getNodeValue();
String icon = currentFore.getElementsByTagName("icon")
.item(0).getAttributes()
.item(0).getNodeValue();
Forecast f = new Forecast();
f.setDay(day);
f.setLowTemp(lowTemp);
f.setHighTemp(highTemp);
f.setIcon(icon);
forecasts.add(f);
}
}
Livre Android.book Page 238 Dimanche, 8. novembre 2009 12:23 12
