我有一个程序可以从带有链接的服务器获取天气。我已经做了一些将字符串组合到一个字符串的东西。我现在需要一些东西来从该XML文件中获取信息。
这是我的代码:(我为安全原因更换了API密钥)
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"));
}
}
}
答案 0 :(得分:0)
不幸的是,在这种情况下你不能使用WebView,因为你很容易will not be able to get html content as a string。相反,请参阅here了解如何从URL获取源代码。您需要设置AsyncTask并在其doInBackground()
函数中执行加载。
将内容放入字符串后,您可以按this tutorial进行解析。
答案 1 :(得分:0)
我从你的问题中了解到你需要从你拥有的字符串中创建文档对象。 作为一个可能的解决方案只需在功能下面包含此功能并使用它。 这将给你w3cdom对象。 您需要做的就是使用任何xml解析器api并根据您的要求提取节点值。
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;
}