[英]How to parse XML inputstream into string or objects (Android studio)
Iam是Android和Java的新功能。 (我可以用C#编程),我试图从Internet检索一些XML文件并将其解析为对象。 Iam正在努力奋战几个小时。 我认为这不是很复杂,但是我找不到正确的方法。
Iam 从此开始,但是其中有很多东西我不需要,所以我尝试只用我需要的东西编写一些干净的代码。 我在互联网上阅读了很多文章,但我无法使它们工作。
我在Android Studio中使用一个Activity创建了一个默认项目。 我在此活动中创建了一个名为XmlManager的子类。 该子类扩展了AsyncTask。 这是其中的方法:
private class XmlManager extends AsyncTask<String,String,String> {
@Override
protected String doInBackground(String... inputUrl)
{
Log.i("XML Status", "ASync proces started");
getStream(inputUrl[0]);
Log.i("XML Status", "ASync proces finished");
return null;
}
@Override
protected void onPostExecute(String result)
{
//Here i want to return the list with objects...
// OR an string with the XML so i can parse it somewhere else,
// I dont know what is the best practice
}
private void getStream(String urlString) {
URL url =null;
HttpURLConnection urlConnection = null;
InputStream is = null;
try {
url = new URL(urlString);
Log.i("Status", "Connection opened");
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.connect();
is = urlConnection.getInputStream();
Log.i("Status", "Streamreader filled");
}
catch (Exception e) {
Log.e("Error",e.getMessage().toString());
}
finally {
if (urlConnection != null) {
urlConnection.disconnect();
Log.i("Status","Connection disconnected");
}
}
}
有人能帮助我吗? 或链接到工作轻松的示例(我找不到:'()
我读过一些有关将XML解析为对象的简单XML库的信息,这是这样做的方法吗? 尝试将XML检索为字符串或其他内容,然后将其与任何库一起解析?
提前致谢!
您可以通过JAXB将xml解析为java对象。
1)您可以通过xmlspy将xml更改为xsd。
2)使用eclipse插件( http://sourceforge.net/projects/jaxb-builder/ )生成java类。
3)使用jaxb将xml解析为java对象。 示例代码如下:
JAXBContext context = JAXBContext.newInstance(XXXX.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
XXXX obj = unmarshaller.unmarshal(is);
XXXX是第二步生成Java类。
尝试从SrackSites使用SitesXmlPullParser,这里是链接: https : //github.com/FoamyGuy/StackSites/blob/master/src/com/makemyandroidapp/example/stacksites/SitesXmlPullParser.java
想法是将标签获取到每个对象,以便您可以选择要使用的任何对象并将其放在列表中
我找到了我想念的东西。 我需要用bufferedReader和Stringbuilder来从网站的XML中生成字符串。 不,我无法将字符串解析为SimpleXML库并成为对象。 我现在使用的getStream方法是:
private void getStream(String urlString) {
URL url = null;
HttpURLConnection urlConnection = null;
InputStream is = null;
try {
url = new URL(urlString);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.connect();
Log.i("Status", "Connection opened");
BufferedReader r = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
StringBuilder total = new StringBuilder();
String line;
while ((line = r.readLine()) != null) {
total.append(line);
}
Log.i("Status", "XML loaded into string");
} catch (Exception e) {
Log.e("Error", e.getMessage().toString());
} finally {
if (urlConnection != null) {
urlConnection.disconnect();
Log.i("Status", "Connection disconnected");
}
}
}
字符串“ total”包含XML代码。 无论如何,谢谢您的帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.