2011-01-30 62 views
1

更換一些值我正在尋找一個HTML解析器可以搜索並替換錨標籤,如HTML解析器來搜索和使用Java

ex 
<a href="/ima/index.php">example</a> 
to 
<a href="http://www.example.com/ima/index.php">example</a> 

更新:

我的代碼以jsoup但不工作

import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.nodes.Element; 
import org.jsoup.select.Elements; 

import com.google.common.collect.ImmutableList; 
import com.google.common.net.InternetDomainName; 

public class test { 
    public static void main(String args[]) throws IOException { 

      Document doc = Jsoup.connect("http://www.google.com").get(); 

      String html =doc.outerHtml().toString(); 

     // System.out.println(html); 

      Elements links = doc.select("a"); 



      for (Element link : links) { 
      String href=link.attr("href"); 
      if(href.startsWith("http://")) 
      { 

      } 
      else 
      { 
       html.replaceAll(href,"http://www.google.com"+href); 
      } 
      } 
      System.out.println(html); 
    } 

} 
+0

你不能只用一個``來實現這個結果?或者你是否想要重寫網站的內容? – 2011-01-30 19:14:39

回答

1

您可以用String.replaceAll()和上

相匹配的正則表達式做到這一點

找到所有相關鏈接。

html = html.replaceAll("<a href=\"/", "<a href=\"http://www.google.com/\""); 
0

這是一個編程問題嗎?如果你正在尋找一個預製的Java文件或者其他的東西來做這件事,那你就錯了。如果你想寫這樣的東西,那麼你可以搜索文本的實例,以a href=/"開始,以/">結尾,然後你可以檢查href值,如果它是一個相對路徑(即開始與/),您可以將其他文本添加到開頭。

2
package javaapplication4; 

import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.nodes.Element; 
import org.jsoup.select.Elements; 

/** 
* 
* @author derek 
*/ 
public class Main 
{ 
    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) 
    { 
     try 
     { 
      Document document = Jsoup.connect("http://www.google.com").get(); 
      Elements elements = document.select("a"); 

      for (Element element : elements) 
      { 
       element.baseUri(); 
      } 
      System.out.println(document); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(System.err); 
     } 
    } 
} 
4

代碼的改變在文件絕對鏈接相對鏈接代碼使用jsoup庫

private void absoluteLinks(Document document, String baseUri) { 
    Elements links = document.select("a[href]"); 
    for (Element link : links) { 
     if (!link.attr("href").toLowerCase().startsWith("http://")) { 
      link.attr("href", baseUri+link.attr("href")); 
     } 
    } 
}