jsoup清理html实体

时间:2014-01-10 01:35:05

标签: java html parsing jsoup

我需要一些帮助来清理jsoup的用户输入,我想删除所有已知的HTML标记,但如果没有真正的HTML标记,请让<>

Jsoup.clean("<b>test</b> te<st <test >test", Whitelist.none())

当前的输出是 test tetest

我希望: test te<st <test >test

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

Jsoup没有提供这种功能。检查以下代码。

import java.util.ArrayList;
import java.util.List;


public class Main {

    public static String removeTags(List<String> tags, String source) { 

        if(tags == null || tags.size() == 0) return source;

        StringBuilder strb = new StringBuilder();

        for(String tag : tags) {
            strb.append(String.format("</?%s.*?>|", tag));
        }

        return source.replaceAll(strb.substring(0, strb.length() - 1), "");

        //strb example : "</?span.*?>|</?em.*?>"
    }

    public static void main(String[] args) {
        try {
            String str = "<b>testj</b> te<st <test >test";
            List<String> tags = new ArrayList<String>();
            tags.add("b");
            System.out.println(removeTags(tags, str));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}