如何从Java中删除文本和Html字符串

时间:2012-12-18 15:25:19

标签: java html string parsing

我想分析html页面的结构。对于一个页面,我把它作为一个字符串,我想删除文本,只保留html结构。我不想使用DOM解析器,我需要一些健壮的东西,它不仅适用于常规html xhtml。我知道正则表达式足以从字符串中删除html标记,但是它们是否可以用来删除文本并仅保留html标记?

您知道我可以使用的其他选项/框架吗?

5 个答案:

答案 0 :(得分:2)

我怀疑使用正则表达式有一种简单的方法。

Jericho是一个非常简洁的HTML解析器,占用空间小,只需一个jar,无需额外的外部库。

答案 1 :(得分:0)

  

您知道我可以使用的其他选项/框架吗?

您可能需要查看JSoup。似乎旨在解决这类问题。

答案 2 :(得分:0)

如果你之前删除了标签,你就会知道基本的要点是去除<之间的所有内容。和>。剥离文本是非常相似的,除了你要删除>之间的所有内容。和<。所以,是的,正则表达式可以很好地帮助你删除文本并只留下标签。如果你不想处理它们,它们也可以用来去掉标签属性。

答案 3 :(得分:0)

这可能会给你一个不错的开始。我没有太多的HTML经验,所以我不知道除了<之外是否还有其他东西需要解析。标签>。

public static void main(String[] args){
    String html = "<body> text text text text </body>";
    String htmlTags = null;
    char c;
    for(int i = 0 ; i < html.length() ; i++){
        c = html.charAt(i);
        if(tagStart(Character.toString(c))){
            for(int j = i ; j < html.length() ; j++){
                if(htmlTags != null){
                    htmlTags += Character.toString(html.charAt(j));
                }else{
                    htmlTags = Character.toString(html.charAt(j));
                }
                c = html.charAt(j);
                if(tagStop(Character.toString(c))){
                    break;
                }
            }
        }
    }
}

private static boolean tagStart(String check){
    if(check.equals("<")){
        return true;
    }else{
        return false;
    }
}

private static boolean tagStop(String check){
    if(check.equals(">")){
        return true;
    }else{
        return false;
    }
}

答案 4 :(得分:0)

有些事情:

pageSource.replaceAll(">.*<", "><");

应该让你开始。