HTMLcleaner堆栈跟踪错误



我正在做一个项目,遇到了一个问题。我试图解析html使用html清洁器,然后使用xpath返回一个字符串。我让它返回一个堆栈跟踪,如果它发现一个错误(它确实)。我真的不知道如何根据堆栈跟踪进行调试。下面是代码。

package ru.habrahabr.stackparser;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.htmlcleaner.TagNode;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.*;
public class stackParser extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button button = (Button) findViewById(R.id.parse);
    button.setOnClickListener(myListener);
}

private ProgressDialog pd;
private OnClickListener myListener = new OnClickListener() {
    public void onClick(View v) {
        pd = ProgressDialog.show(stackParser.this, "Working...",
                "request to server", true, false);
        new parseSite()
                .execute("http://wiki.teamliquid.net/starcraft2/3_Gate_Robo");
    }
};
private class parseSite extends AsyncTask<String, Void, String> {
    protected String doInBackground(String... arg) {
        String output = new String();
        try {
            htmlHelper hh = new htmlHelper(new URL(arg[0]));
            output = hh.htmlHelper(arg[0]);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return output;
    }

    protected void onPostExecute(String output) {
        pd.dismiss();
        TextView view = (TextView) findViewById(R.id.tv1);
        view.setText(output);
    }
}
这是我的HTML帮助类
package ru.habrahabr.stackparser;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import org.htmlcleaner.CleanerProperties;
import org.htmlcleaner.HtmlCleaner;
import org.htmlcleaner.TagNode;
import org.htmlcleaner.XPatherException;
public class htmlHelper {
TagNode rootNode;
public htmlHelper(URL url) {
    // TODO Auto-generated constructor stub
}
public String htmlHelper(String arg) throws IOException, XPatherException
{
    CleanerProperties props = new CleanerProperties();
    // set some properties to non-default values
    props.setTranslateSpecialEntities(true);
    props.setTransResCharsToNCR(true);
    props.setOmitComments(true);
    HtmlCleaner cleaner = new HtmlCleaner(props);
    rootNode = cleaner.clean(arg);
    Object[] nodes = rootNode.evaluateXPath("//h1[@id='firstHeading']");
    String things = nodes.toString();
    return things;
}

UI和加载栏工作良好,但TextView一直返回[Ljava.lang.Object;@42455a88

我真的很感激你能帮我……我已经纠结了一整天,但似乎还是没弄明白。谢谢!

try as read Text from TagNode:

Object[] nodes = rootNode.evaluateXPath("//h1[@id='firstHeading']");
if(nodes == null || nodes.length < 1) {
    return "";
}
TagNode tagnode = (TagNode)nodes[0];
String things = tagnode.getText();

我明白了。Xpath查询引用了XML文档中的DOM树。因此,为了避免抛出,需要在清理后初始化DOM树。然后Xpath就可以工作了。

相关内容

  • 没有找到相关文章