2013-12-10 88 views
1

從一個網站解析HTML代碼,我差不多完成了。我從網站上獲得了我需要的文本部分,但偶爾會有一些鏈接包含在我希望擺脫的HTMl中。我正在考慮使用這樣的事實:我不想要的所有元素都以'<'開頭,當然還有'>'開頭。無論如何要做到這一點?這是我迄今爲止所擁有的。從字符串中刪除段

for(int i = 0; i<desc.length();i++) 
    { 
     if(desc.charAt(i)==('<')){ 

     } 
    } 

desc是我想修剪的字符串。

回答

0

手動解析標記語言(如XML和HTML)通常被認爲是一個壞主意。但是,如果您只是試圖刪除所有元素,則可以看到簡單腳本可能有用的位置。

我認爲值得一提的是,如果您刪除HTML的所有元素,則可能會有多個文本卡在一起。看看這段代碼,看看它是否有幫助。

public class RemoveHtmlElements { 

    public static void main(String[] args) { 

     String html = "<!DOCTYPE html><html><body><h1>My First Heading</h1>" 
       + "<p>My first paragraph.</p></body></html>"; 

     boolean elementsExist = true; 
     while(elementsExist) { 
      if(html.contains("<")) { 
       int open = html.indexOf("<"); 
       int closed = html.indexOf(">", open); 
       html = html.substring(0, open) + " " + html.substring(closed + 1); 
      } else { 
       elementsExist = false; 
      } 
     } 

     System.out.println(html); 

    } 

} 

這應該清除任何括號元素的HTML。它將輸入一個空格,在該空格處刪除一個元素以防止文本被意外卡住。

0

我會嘗試這樣的事情;

StringBuilder sb = new StringBuilder(); 
boolean open = false; 
for (char c : desc.toCharArray()) { // iterate over the characters 
    if (c == '<') { // if we hit a less then store that the tag is open. 
    open = true; 
    } else if (open && c == '>') { // if the tag is open and the close symbol hits close. 
    open = false; 
    } else if (!open) { // if the tag isn't open 
    sb.append(c); 
    } 
} 
System.out.println(sb.toString()); // print the string.