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

Примечание: шаблон дата должна совпадать с форматом вы передаете в синтаксического анализа метода.

Дополнительное примечание: в док = Jsoup.connect (URL) делает сетевые вызовы, рассмотреть вопрос о создании его в AsyncTask вместо вызова непосредственно на UI Thread (в методе OnCreate()).

+0

Этот не работает, у меня есть дата в порядке, но значение = null и 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

Смежные вопросы