2011-01-14 3 views
4

유효한 HTML 태그가 아닌 경우 문자열의 모든 태그 모양 부품을 교체하고 싶습니다. 태그 모양 부분은 <> 대괄호로 묶은 것입니다. 예 : <[email protected]> 또는 <hello>이지만 <br>, <div> 등을 유지해야합니다.Java는 문자열의 HTML 태그가 아닌 모든 태그를 바꿉니다.

어떻게 해결할 수 있습니까?

도움을 주시면 감사하겠습니다.

환호,

+0

교체하거나 제거? 예상 결과를 보여주십시오. – dogbane

+0

"one two three four five

six
"to "one two three four fif
six
"- 빈 문자열로 바꾸십시오. –

답변

8

JSoup을 사용하면 HTML을 지울 수 있습니다.

String cleaned = Jsoup.clean(html, Whitelist.relaxed()); 

당신은 정의 Whitelists 중 하나를 사용할 수 있습니다 또는 당신은 당신의 자신의 주문을하는 당신이 청소기를 허용하고자하는 HTML 요소를 지정할 만들 수 있습니다. 나머지는 모두 제거됩니다.


귀하의 구체적인 예는 다음과 같습니다

String html = "one two three <blabla> four <text> five <div class=\"bold\">six</div>"; 
String cleaned = Jsoup.clean(html, Whitelist.relaxed().addAttributes("div", "class")); 
System.out.println(cleaned); 

출력 :

one two three four five 
<div class="bold"> 
six 
</div> 
+0

그게 내가 필요한거야! 감사! –

0

는 java.util.Scanner 클래스에서보세요 발라 즈 - 당신이 문자열이 HTML 태그 또는하지 일치하는 경우 구분은 다음을 참조 설정할 수 있습니다 - 당신은 배열을 구축해야합니다 무시해야하는 문자열

+0

자신이 배열을 작성하고 싶지 않았기 때문에 http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/text/와 비슷한 기존의 Enum을 찾고있었습니다. html/HTML.Tag.html –

+0

이 게시물과 비슷한 점 -> http://stackoverflow.com/questions/240546/removing-html-from-a-java-string – ManseUK

+0

네, 그 또한 보았습니다. 그래서 내 문제는 HTML 태그를 없애고 싶지 않다는 점을 제외하면 비슷하다. –

0

비교 알고리즘에 종료 태그를 포함 할 수도 있습니다. 따라서 슬래시 (html 끝 태그)를 찾아 비교하기 전에이를 제거 할 수 있습니다.

0

신뢰할 수없는 데이터를 웹 페이지에 표시하려면 잘못된 태그를 간단히 제거하는 것만으로는 충분하지 않습니다. OWASP AntiSamy을보세요.

+0

힌트를 가져 주셔서 감사합니다. im을 살펴 보겠습니다. 그러나 이번에는 간단히 제거하겠습니다. 그 이상도 이하도 아닌. –

관련 문제