করার স্বীকৃত উত্তরে কেবল Jsoup.parse(html).text()
দুটি সম্ভাব্য সমস্যা রয়েছে (জেএসপ ১.7.৩ সহ):
- এটি পাঠ্য থেকে লাইন ব্রেকগুলি সরিয়ে দেয়
- এটি পাঠ্যকে রূপান্তর
<script>
করে<script>
আপনি যদি এক্সএসএস থেকে রক্ষা করতে এটি ব্যবহার করেন তবে এটি কিছুটা বিরক্তিকর। JSoup এবং অ্যাপাচি স্ট্রিংএস্কেপ ইউটিলস উভয়ই ব্যবহার করে উন্নত সমাধানে আমার সেরা শটটি এখানে:
// breaks multi-level of escaping, preventing &lt;script&gt; to be rendered as <script>
String replace = input.replace("&", "");
// decode any encoded html, preventing <script> to be rendered as <script>
String html = StringEscapeUtils.unescapeHtml(replace);
// remove all html tags, but maintain line breaks
String clean = Jsoup.clean(html, "", Whitelist.none(), new Document.OutputSettings().prettyPrint(false));
// decode html again to convert character entities back into text
return StringEscapeUtils.unescapeHtml(clean);
নোট করুন যে শেষ পদক্ষেপটি কারণ আমাকে আউটপুটটিকে সরল পাঠ্য হিসাবে ব্যবহার করতে হবে। আপনার যদি কেবল এইচটিএমএল আউটপুট প্রয়োজন হয় তবে আপনার এটি সরাতে সক্ষম হওয়া উচিত।
এবং এখানে পরীক্ষাগুলির একগুচ্ছ (আউটপুট থেকে ইনপুট):
{"regular string", "regular string"},
{"<a href=\"link\">A link</a>", "A link"},
{"<script src=\"http://evil.url.com\"/>", ""},
{"<script>", ""},
{"&lt;script&gt;", "lt;scriptgt;"}, // best effort
{"\" ' > < \n \\ é å à ü and & preserved", "\" ' > < \n \\ é å à ü and & preserved"}
যদি আপনি এটি আরও ভাল করার কোনও উপায় খুঁজে পান তবে দয়া করে আমাকে জানান।