2013-09-21 173 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