Bom dia pessoal.
Tenho um problema.
Eu executo um WebService e ele me retorna a seguinte String:
<?xml version="1.0" encoding="utf-16"?> <CurrentWeather> <Location>Pirassununga, Brazil (SBYS) 21-59S 047-20W 598M</Location> <Time>Nov 15, 2005 - 05:00 AM EST / 2005.11.15 1000 UTC</Time> <Wind> Calm:0</Wind> <Visibility> greater than 7 mile(s):0</Visibility> <Temperature> 68 F (20 C)</Temperature> <DewPoint> 60 F (16 C)</DewPoint> <RelativeHumidity> 77%</RelativeHumidity> <Pressure> 29.97 in. Hg (1015 hPa)</Pressure> <Status>Success</Status></CurrentWeather>
A principio um XML? NAO??
Mas como que eu faco pra ler isso como XML??
Corri atraz de uns codigos, mas todos se baseiam em abrir um arquivo XML e nao partir de uma String com tags XML!??!
Eae galera que que eu faco, nao queria ter que salvar e abrir novamente o arquivo.
Abraços!
[code]String xml = //essa String aí
InputSource src = new InputSource(new StringReader(xml));
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(src);[/code]
new StringReader(xml)
Era isso que estava falnta… valew Jair.
hummmm… ainda nao ta indo!!
Alguem poderia me dizer q q ta acontecendo??
O que acontece eu sei. Eu pego o Child TEMPERATURE, por exemplo, mas ele me retorna null no valor desse child. :roll:
Mas por que?
String xml = <?xml version="1.0" encoding="utf-16"?>
<CurrentWeather>
<Location>Porto Alegre Aero-Porto , Brazil (SBPA) 30-00S 051-11W 3M</Location>
<Time>Sep 19, 2006 - 07:38 AM EDT / 2006.09.19 1138 UTC</Time>
<Wind> from the NE (050 degrees) at 3 MPH (3 KT):0</Wind>
<Visibility> less than 1 mile:0</Visibility>
<SkyConditions> obscured</SkyConditions>
<Temperature> 60 F (16 C)</Temperature>
<DewPoint> 60 F (16 C)</DewPoint>
<RelativeHumidity> 100%</RelativeHumidity>
<Pressure> 30.03 in. Hg (1017 hPa)</Pressure>
<Status>Success</Status>
</CurrentWeather>
e o codigo que to usando pra le o xml:
[code]public TesteXML() {
String xml = new Temperatura().getTemperatureByCity("Porto Alegre");
InputSource is = new InputSource(new StringReader(xml));
try {
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(is);
NodeList nl = doc.getElementsByTagName("Temperature");
Node r = nl.item(0);
System.out.println("TESTE : " + r.getNodeValue());
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}[/code]
Ajuda ai!!!
Está retornando null porque o elemento “Temperature” não tem valor, quem tem valor é o filho dele…
System.out.println("TESTE : " + r.getFirstChild().getNodeValue());