簡體   English   中英

如何將XML輸入流解析為字符串或對象(Android Studio)

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM