Java 替换html中的值

Java 替换html中的值,java,android,jsoup,Java,Android,Jsoup,所以我使用jsoup解析一个网站,然后在文本视图中显示html 它有一些断开的链接,所以我必须进去更换它们。以下是我的一些代码: new Thread(new Runnable() { public void run() { try { Elements links = doc.select("a"); for (Eleme

所以我使用jsoup解析一个网站,然后在文本视图中显示html

它有一些断开的链接,所以我必须进去更换它们。以下是我的一些代码:

        new Thread(new Runnable() {
                public void run() {
                              try {
            Elements links = doc.select("a");
                     for (Element i: links){
                           String relHref = i.attr("abs:href");
                           if (!relHref.startsWith("http://") && !relHref.startsWith("https://")){
                                      html = html.replace(relHref, "http://www.bths.edu"+ relHref);
                                      }
                          }
     runOnUiThread(new Runnable() {
     public void run() {
            article.setText(Html.fromHtml(set));
            article.setMovementMethod(LinkMovementMethod.getInstance());
                                        }
                                    });
不幸的是,我一直遇到这样的错误:

 java.lang.OutOfMemoryError
            at java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:82)
            at java.lang.StringBuilder.<init>(StringBuilder.java:67)
            at java.lang.String.replace(String.java:1374)
            at com.tod.android.bths.ArticleViewer$2.run(ArticleViewer.java:78)
            at java.lang.Thread.run(Thread.java:856)
我在进行此切换时没有收到错误

String relHref = i.attr("href");
但这不是我需要的。。。为什么abs:href会给我带来问题

@哈拉尔德

  //So I've done this and now, I don't get an error. But nothing gets replaced. Why?

 if (!relHref.startsWith("http://") && !relHref.startsWith("https://")&& relHref!="" ){
 html = html.replace(relHref, "http://www.bths.edu"+ relHref);
                                    }

检查relHref是否为空字符串,因为如果为空,html中的每个空字符串都将替换为非空字符串。它们有很多。

增加jvm堆并尝试探查器查看使用率高的地方。错误发生在哪里?你能发布堆栈跟踪吗?abs:使用org.jsoup.nodes.Node.absUrlString。那里是否发生OutOfMemoryException?不要将字符串与!=进行比较。在这里,您应该使用relHref.length>0。@Harald我切换了它,但仍然没有任何内容被替换:您是否偶尔检查relHref是否是一个确实出现在html中的字符串?
  //So I've done this and now, I don't get an error. But nothing gets replaced. Why?

 if (!relHref.startsWith("http://") && !relHref.startsWith("https://")&& relHref!="" ){
 html = html.replace(relHref, "http://www.bths.edu"+ relHref);
                                    }