2011-09-06 38 views
0

我在String變量中有一個Big html,我想獲取div的內容。我不能依賴正則表達式,因爲它可以嵌套div。所以,讓我們假設我有以下字符串 -從HTML中提取表示爲字符串的內容

String test = "<div><div id=\"mainContent\">foo bar<div>good best better</div> <div>test test</div></div><div>foo bar</div></div>"; 

然後,我怎麼能得到這個用一個簡單的java程序 -

<div id="mainContent">foo bar<div>good best better</div> <div>test test</div></div> 

那麼我的計算策略是這樣的(可能是horrable,仍然戰鬥正確) -

public static void main(String[] args) { 
      int count = 1; 
     int fl = 0; 
     String s = "<div><div id=\"mainContent\">foo bar<div>good best better</div> <div>test test</div></div><div>foo bar</div></div>"; 
     String tmp = s; 
     int len = s.length(); 
     for (int i=0; i<len; i++){ 
      int st = s.indexOf("div>"); 
      if(st > -1) { 
       char c = s.charAt(st-1); 
       if(c == '/') { 
        count--; 
       } else { 
        count++; 
       } 
       s = s.substring(st+4); 
       System.out.println(s); 
       i = i + st; 
       System.out.println(c + " -- " + st + " -- " + count + " -- " + i); 
       if (count == 0) { 
        fl = i; 
        break; 
       } 
      } 
     } 
     System.out.println("final ind - " + fl); 
     s = tmp.substring(0, fl + 4); 
     System.out.println("final String - " + s); 
} 

回答

2

我會推薦使用JSoup解析HTML並找到您要查找的內容。

它滿足了簡單需求是肯定的。只需幾行代碼即可完成所需內容!

jsoup是一個用於處理真實世界HTML的Java庫。它爲 提供了一個非常方便的API,用於提取和操作數據,使用最好的DOM,CSS和類似jquery的方法。

jsoup實現了WHATWG的HTML5規範,並解析HTML到 現代瀏覽器做同樣的DOM。

刮,並從URL解析HTML,文件或字符串

查找和提取數據,使用DOM遍歷或CSS選擇

jsoup是專門用來對付HTML的所有品種,在 野外發現;從原始和驗證,到無效的標籤湯; jsoup將 創建一個合理的分析樹。

使用selector syntax使查找和提取數據變得非常簡單。

public static void main(final String[] args) 
{ 
    final String s = "<div><div id=\"mainContent\">foo bar<div>good best better</div> <div>test test</div></div><div>foo bar</div></div>"; 
    final Document d = Jsoup.parse(s); 
    final Elements e = d.select("#mainContent"); 
    System.out.println(e.get(0)); 
} 

輸出

<div id="mainContent"> 
    foo bar 
    <div> 
    good best better 
    </div> 
    <div> 
    test test 
    </div> 
    </div> 

沒有得到比這更簡單!

0

恐怕答案是:你不知道。至少不是一個「簡單」的節目......

但是希望還是有的:您可以使用HTML解析器庫(如NekoHTMLHTMLParser,儘管後者項目似乎是死)來解析字符串和retrive的你需要的部分。