如何从Ajax请求加载和处理HTML

时间:2012-11-28 12:53:13

标签: java android ajax dom-manipulation

我想在我的Android应用程序中运行后台任务,该任务发送Ajax请求,从响应中解析/操作HTML并从HTML数据创建新对象。

请求和操作数据并创建新对象(没有多线程)非常容易。我可以创建一个WebView,使用一些JavaScript函数加载本地HTML文件,从JavaScript发送Ajax请求,使用jQuery操作它并通过'MyJavaScriptInterface'将其发回。

Java Code Snippet

// method of 'MyJavaScriptInterface'
public void processJSON(String jsonArrayString) {
    try {
        JSONArray array = new JSONArray(jsonArrayString);
        for (int i = 0; i < array.length(); i++) {
            JSONObject row = array.getJSONObject(i);
            // MyObject obj = new MyObject(row.getString("title"),
            //                             row.getString("href")  );
            // do something fancy with the object
        }
    } catch (JSONException e) {
        Log.e("MyJavaScriptInterface", e.getMessage(), e);
    }
}

// initialize WebView
webView.addJavascriptInterface(new MyJavaScriptInterface(), "android");

// load local html file with JavaScript functions
webView.loadUrl("file:///android_asset/www/index.html");

JavaScript代码段

$.ajax({
    url: 'http://example.com/index',
    success: function(data) {
        $(data).find('#container').children().each(function(){

            jsonArray.push( {
                'title': this.title, 
                'href': this.href
            } )
        });

        jsonArray = JSON.stringify(jsonArray);
        // send 'jsonArray' back to the android device
        android.processJSON( jsonArray );
    }
});

HTML Code Snippet:

这就是网站的样子 - 但我无法控制内容。

<!DOCTYPE html>
<html>
    <!-- header -->
    [...]
    <body>
        <div id="container">
            <a href="someUrl" title="someTitle"><img src="relativeImageUrl"></a>
                <!-- more links -->
                [...]
        </div>
    </body>
</html>

我想在单独的线程中加载数据,但这对于WebView来说是不可能的,所以这是我的问题:

问题

  • 我应该如何执行相同的任务没有 jQuery和JavaScript?
  • 是否有一种简单的方法可以在Java中访问DOM(或者我是否必须解析HTML数据的整个XML结构)?

提前致谢!

0 个答案:

没有答案