2

I'm developing an Android app. I need to change an Element in Jsoup to a string so that I can subtract the two. The code below and String value = valueOf(arrT.val()); do not work. I'm not sure how to convert an Element into a string. My code is:

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();



 }

}
}   

It gives me a compile error saying that prdt cannot change from an Element to a string. I would love any help you could give on this, because there is noting online that I can find on this. Thank you.

3 Answers 3

3

Use Jsoup text() function

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
Date date2 = sdf.parse(prdt.text());
Sign up to request clarification or add additional context in comments.

1 Comment

Just curious, what's the difference between the var function and the text function? Var didn't work, but this did.
1

try out:

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

Date date = sdf.parse(value);

see the jsoup apidocs

Note: the date pattern must match with the format you are passing to the parse method.

Additional note: as doc = Jsoup.connect(URL) does network calls, consider putting it in an AsyncTask instead of calling directly on the UI Thread (in the onCreate() method).

3 Comments

This doesn't work, I have the date part okay, but value = null and arrT = 20130922 14:15:16.
@hichris123 HH:mm:ss this is the format you want but actually that doesn't matter the format is in which your data is that is yyyyMMdd hh:mm:ss Check my answer again
The string in the TextView doesn't display anything, so I don't think that this method works.
1

If you are getting date in

Then it should be like this and are you forgetting prdt.val()

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

6 Comments

the Element prdt actually equals <prdt> 20130922 14:39:23 </prdt> Could this have an affect on why it returns nothing after Date date2 = sdf.parse(prdt.val()); Date date1 = sdf.parse(arrT.val());?
How can I strip out the <prdt> and </prdt>?
Check for the values of String.valueOf(prdt.val()) what it is
It equals <prdt> 20130922 16:33:17 </prdt>. Will this work to strip out the tag? stackoverflow.com/questions/8694984/remove-part-of-string
use can use this string.replace("<",""); string.replace("/>",""); string.replace("prdt",""); them trim the string remember prdt changes with arrT so in that case change it
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.