[英]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.