0

我是 Java / Android 的新手,所以请耐心等待。提前感谢您的宝贵时间。我正在编写一个简单的 android 应用程序,它将扫描网页源中的 a=href 链接并返回它们

我已经用谷歌搜索了大约 2 天,但找不到任何明确的答案,因此我向 SO 提出了问题。目前,我正在使用 Eclipse 在使用 Ctrl-Shift-O 时生成的以下导入

import javax.swing.text.EditorKit;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.html.HTML;
import javax.swing.text.html.HTMLEditorKit;

问题是,当我运行我的 android 应用程序时,它在使用这些库的代码上崩溃(下面的代码)。

我需要找到一种不使用 javax.swing 导入的方法。我设法弄清楚 android.text.html 有一些功能,但不是我需要的。

是否有任何 Android 导入可用于执行以下操作,或者有没有办法使 javax.swing.text.* 导入与 android 一起使用?

代码在这里:

 try {  

    URLConnection conn = params[0].openConnection();

    Log.i(DEBUG_TAG, "Code fails here for the new declarations");
    BufferedReader rd = new BufferedReader( new InputStreamReader(conn.getInputStream()));
    EditorKit kit = new HTMLEditorKit();
    HTMLDocument doc = (HTMLDocument) kit.createDefaultDocument();

    kit.read(rd, doc, 0);

    HTMLDocument.Iterator it = doc.getIterator(HTML.Tag.A);


while (it.isValid()) {
            SimpleAttributeSet s = (SimpleAttributeSet) it.getAttributes();
            String link = (String) s.getAttribute(HTML.Attribute.HREF);

            if (link != null) {

              if (link.contains("naruto") && !link.contains("http://mangastream.com")){
                  // find the chapter number / id and print to console

                  String chapterNumber = link.replace("http://readms.com/r/naruto/", "");
                  // System.out.println("Chapter = " + chapterNumber.substring(0,3));
                  // System.out.println("ChapterID = " + chapterNumber.substring(4,8));
                  if (!registeredChapters.containsKey(chapterNumber.substring(0,3))){
                      registeredChapters.put(chapterNumber.substring(0,3),chapterNumber.substring(4,8));                     

                  }
              }      

            }
      it.next();
    }


    //appendToFile("Done with URL processing");
    Log.i(DEBUG_TAG, "Current chapters / id's found: ");

    }

catch (IOException ioe){
    ioe.printStackTrace();
}

catch (Exception e){
    Log.i(DEBUG_TAG, e.getLocalizedMessage());
}

catch (Throwable t){
    Log.i(DEBUG_TAG,t.getClass().getName());
}
4

1 回答 1

-1

我正在编写一个简单的 android 应用程序,它将扫描网页源中的 a=href 链接并返回它们

使用 HTML 解析器来解析 HTML。

目前我正在使用以下导入

它们都不是通用的 HTML 解析器。使用 HTML 解析器来解析 HTML。

java html parser在主要搜索引擎上进行搜索:

搜索还出现了Java HTML Parsingwhich HTML Parser is the best?从这里开始 StackOverflow 以及许多其他资源。

于 2013-09-12T13:35:54.470 回答