2013-09-21 166 views
1

我正在開發一個Android應用程序。我需要將Jsoup中的元素更改爲一個字符串,以便我可以將這兩個元素相減。下面的代碼和String value = valueOf(arrT.val());不起作用。我不知道如何將元素轉換爲字符串。我的代碼是:將Jsoup元素轉換爲字符串

TestStation.java

public class TestStation extends Activity { 
String URL = "http://lapi.transitchicago.com/api/1.0/ttarrivals.aspx?key=201412abc85d49b2b83f907f9e329eaa&mapid=40380"; 
@SuppressWarnings("deprecation") 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
     setContentView(R.layout.test_station); 
     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 



Document doc = null; 

TextView tv = (TextView) findViewById(R.id.tv); 

try { 
    doc = Jsoup.connect(URL).userAgent("Mozilla/5.0 (Macintosh; U; Intel Mac OS X; de-de) AppleWebKit/523.10.3 (KHTML, like Gecko) Version/3.0.4 Safari/523.10").get(); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
Elements elem = doc.select("eta"); 
for (Element div : elem) { 

}Elements elemn = doc.select("eta"); for (Element div : elem) { 
Elements arrT = div.select("arrT"); 
Elements prdt = div.select("prdt"); 


try { 

    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss"); 
    Date date2 = sdf.parse(prdt.val()); 
    Date date1 = sdf.parse(arrT.val()); 
    tv.setText(String.valueOf (prdt)); 
    long dateDiff = (date1.getTime() - date2.getTime())>0 ? (date1.getTime() - date2.getTime()) :(date2.getTime() - date1.getTime()); 
    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd HH:mm:ss"); 
    sdf1.format(dateDiff); 


    } 

catch (ParseException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 



} 

} 
} 

它給了我一個編譯錯誤說PRDT不能從一個元素更改爲字符串。我很樂意爲您提供任何幫助,因爲我在網上可以找到這方面的信息。謝謝。

回答

3

使用Jsoup text()功能

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss"); 
Date date2 = sdf.parse(prdt.text()); 
+0

只是好奇,var函數和文本函數有什麼區別?瓦爾沒有工作,但是這樣做。 – hichris123

1

嘗試:

String value = arrT.val(); SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");

Date date = sdf.parse(value);

see the jsoup apidocs

注:日期模式必須要傳遞到解析方法的格式相匹配。

附加說明:如doc = Jsoup.connect(URL)可以進行網絡調用,可以考慮將其放在AsyncTask中,而不是直接在UI線程上調用(在onCreate()方法中)。

+0

這不起作用,我有日期部分好,但值=空和arrT = 20130922 14:15:16。 – hichris123

+0

@ hichris123 HH:mm:ss這是你想要的格式,但實際上無關緊要的格式是你的數據是yyyyMMdd hh:mm:ss再次檢查我的答案 – Trikaldarshi

+0

TextView中的字符串沒有顯示任何東西,所以我不認爲這種方法有效。 – hichris123

1

如果您在

得到最新那麼就應該是這樣的 和你是不是忘記prdt.val()

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd hh:mm:ss"); 
Date date = sdf.parse(prdt.val()); 
+0

元素prdt實際上等於 20130922 14:39:23這可能會影響它爲什麼在'Date date2 = sdf.parse(prdt.val()); \t \t日期date1 = sdf.parse(arrT.val());'? – hichris123

+0

如何去掉? – hichris123

+0

檢查String.valueOf(prdt.val())的值是什麼 – Trikaldarshi