2013-01-22 4 views
1

난 단지 HTML 태그가 아닌 새로운 라인 문자줄 바꿈 문자가 아닌 html 태그 만 제거 하시겠습니까?

<p>test1 <b>test2</b> test 3 </p> //line 1 
<p>test4 </p> //line 2 

내가 텍스트 풍부한 에디터의 내용보다 열면를 제거하려는 내가 자바 콘텐츠 아래에있는, 줄 1, 2 호선은하지 않고 (다른 라인에 표시됩니다 </p> 태그를 표시). 그러나 메모장 콘텐츠에는 </p> 태그가 표시됩니다. 내가 사용한 모든 HTML 태그를 제거하려면

Jsoup.parse(aboveContent).text() 

모든 html 문자가 제거됩니다. 그러나 그것은 메모장에서 같은 줄에 모든 줄 1과 줄 2를 보여줍니다. 어떻게 든 Jsoup는 개행 문자도 제거합니다.

내가 시도하는 것 : -

나는 또한 \r\n</p>를 교체 시도하고

Jsoup.parse(contentWith\r\n-Insteadof-</p>Tag).text() 

를 html 태그를 제거 할 수 있지만 여전히 Jsoup 디버거의 I에서와 같은 라인 문자의 끝을 (제거 line1과 line2를 모두 볼 수 있습니다).

어떻게하면 줄 문자 만 빼고 줄 문자는 없앨 수 있습니까?

답변

4

text()은 모두 공백 문자를 제거하므로 한 줄로 표시됩니다. 그러나 당신은 StringBuilder를 사용하고 거기에 각 행 삽입 할 수 있습니다

final String html = "<p>test1 <b>test2</b> test 3 </p>" 
        + "<p>test4 </p>"; 

Document doc = Jsoup.parse(html);   
StringBuilder sb = new StringBuilder(); 


for(Element element : doc.select("p")) 
{ 
    /* 
    * element.text() returns the text of this element (= without tags). 
    */ 
    sb.append(element.text()).append('\n'); 
} 

System.out.println(sb.toString().trim()); 

출력 :

여기
public static String cleanNoMarkup(String input) { 
    final Document.OutputSettings outputSettings = new Document.OutputSettings().prettyPrint(false); 
    String output = Jsoup.clean(input, "", Whitelist.none(), outputSettings); 
    return output; 

} 

중요한 일들은 다음과 같습니다

test1 test2 test 3 
test4 
12

또한이 작업을 수행 할 수 있습니다 : 1. Whitelist.none() - 마크 업이 허용되지 않습니다. 2..prettyPrint (fa lse) - 줄 바꿈이 제거되지 않습니다.