0

I got a program that gets the weather from a server with a link. I already made something that combines strings to a string that is the url. I now need something to get information from that XML file.

This is my code: (I REPLACED API KEY FOR SAFETY REASONS)

package com.example.thelexapp;

import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.view.Menu;
import android.view.View;
import android.webkit.WebView;
import android.widget.TextView;

public class MainActivity extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

public void getPositionAndGetWheater(View view) {
    LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    if (location != null) {

        TextView text = (TextView) findViewById(R.id.textView1);
        text.setTextColor(Color.parseColor("#808080"));
        double longitude = location.getLongitude();
        double latitude = location.getLatitude();
        String longitudestring = String.valueOf(longitude);
        String latitudestring = String.valueOf(latitude);
        String URLforweather = "http://api.worldweatheronline.com/free/v1/weather.ashx?q=" + longitudestring + "," + latitudestring + "&format=xml&num_of_days=1&key=APIKEYIREPLACEDb";
        WebView webview = (WebView) findViewById(R.id.webview);
        webview.loadUrl(URLforweather);
    } else {
        final TextView textViewToChange = (TextView) findViewById(R.id.textView1);
        textViewToChange.setText("Unable to get weather information.");
        TextView text = (TextView) findViewById(R.id.textView1);
        text.setTextColor(Color.parseColor("#FF0000"));
    }

}

}

2 Answers2

0

Unfortunately, you mustn't use a WebView in this case, because you will not be able to get html content as a string easily. Instead, see here for how to get source code from a URL. You will need to set up an AsyncTask and perform the loading in its doInBackground() function.

After you have your content in a String, you can follow this tutorial to parse it.

Community
  • 1
  • 1
BVB
  • 5,380
  • 8
  • 41
  • 62
0

As I understand from your problem is that you need to make document object from the string that you have. As a probable solution Just include this function below function and use it. This will give you w3cdom object. All else you need to do is use any xml parser api and extract your node value as per your requirement.

private static Document convertStringToDocument(String xmlStr) {
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
    DocumentBuilder builder;  
    try 
    {  
        builder = factory.newDocumentBuilder();  
        Document doc = builder.parse( new InputSource( new StringReader( xmlStr ) ) ); 
        return doc;} catch (Exception e) {  
        e.printStackTrace();  
    } 
    return null;
}
samir
  • 339
  • 6
  • 19