2012-05-31 54 views
0

我使用Scala的閱讀從谷歌的天氣API一個xml:谷歌的天氣API,問題讀取XML

val response = new URL("http://www.google.com/ig/api?weather=MyCity").openStream() 
var respXML = response.read() 
println(respXML) 

,但是當我運行它的println打印一個數字:60,而不是實際的XML的,我已經用curl實用程序嘗試過了,它工作正常,原諒我的無知,但即時通訊新的Java的淨類,據我所知,從教程這應該工作。

這是所有相關的代碼,沒有比這更多的東西。

謝謝。

回答

3

如果您使用Scala,scala.io.Source是您的好朋友。

import scala.io.Source 
import scala.xml.XML 
import java.net.URL 

val source = Source.fromURL(new URL("http://www.google.com/ig/api?weather=MyCity")) 
val xmlString = source.mkString // Raw XML String 
val xml = XML.loadString(xmlString) // Scala XML object 
+0

它的工作原理,我想我永遠不會知道在Java版本發生了什麼事,我會檢查更多的scala.io包 – loki

+2

@ user1108631你的Java版本的問題是,當你調用read( )在InputStream上,它只從流中讀取一個字節並將其作爲int返回,而不是整個String的內容。而且因爲響應XML中的第一個字符(字節)是'<',如果將其轉換爲整數,則爲60。那就是爲什麼你得到60而不是實際的XML。 –