0

我是Android开发的新手。现在我正在尝试解析。我有很多解析 XML 的教程。但我想知道异步解析 XML。我在某个地方找到了,xml 可以使用 AsyncTask 异步加载。谁能帮我找出来。

提前致谢

4

2 回答 2

3

下面是使用 AsyncTask 的教程:

http://droidapp.co.uk/?p=177

还有一个用于解析 RSS / XML:

http://droidapp.co.uk/?p=166

您需要在 AsyncTask 的 doInBackground 中调用您的解析函数。

于 2012-05-22T06:34:58.770 回答
1
public class _StackOverflowActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        String yourXmlString = "<put your xml String here>"; 

        ParseXMLTask parseXMLTask = new ParseXMLTask();
        parseXMLTask.execute(yourXmlString); 
    }

    class ParseXMLTask extends AsyncTask<String, Void, Void> {
        @Override
        protected Void doInBackground(String... params) {
            String yourXml = params[0]; 

            //Parse your xml here
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            //do something after parsing is done
        }   
    }
}

首先,您必须扩展类 AsyncTask。在我的示例中,我将其命名为 ParseXMLTask。

AsyncTask 要求您实现一种方法,即“doInBackground”。doInBackground 在单独的线程中运行,将用于解析 xml 的代码放在那里。

线程完成后,调用 onPostExecute。onPostExecute 在您的主线程中运行,如果您希望在 doInBackground 完成后执行某些操作,可以使用它

要使用 ParseXMLTask,您必须将它实例化为一个对象。然后运行命令.execute()。您可以传递execute与我所做的类似的对象parseXMLTask.execute(yourXmlString);。您可以传递任意数量的变量,并确保以doInBackground类似于String yourXml = params[0];. 如果您在 .execute say... 中传递了第二个变量,请通过 doInBackgroundparseXml.execute(yourXmlString, my2ndVariable);处理它

 String yourXml = params[0]; 
 String the2ndVariable = params[1];

当您调用 .execute 时,您告诉 AsyncTask 在单独的线程中运行您放置在 doInBackground 中的任何代码。

于 2012-05-22T06:40:56.260 回答