我想分析html页面的结构。对于一个页面,我把它作为一个字符串,我想删除文本并只保留html结构。我不想使用DOM解析器,而且我需要一些健壮的工具,它不仅适用于普通的html,而且还适用于xhtml。我知道正则表达式足以去除字符串中的html标签,但是它们可以用于去除文本并仅保留html标签吗?如何从Java和Html字符串中去除文本
您是否知道我可以使用的其他选项/框架?
我想分析html页面的结构。对于一个页面,我把它作为一个字符串,我想删除文本并只保留html结构。我不想使用DOM解析器,而且我需要一些健壮的工具,它不仅适用于普通的html,而且还适用于xhtml。我知道正则表达式足以去除字符串中的html标签,但是它们可以用于去除文本并仅保留html标签吗?如何从Java和Html字符串中去除文本
您是否知道我可以使用的其他选项/框架?
您是否知道我可以使用的其他选项/框架?
你可能想看看JSoup。似乎旨在解决这种类型的问题。
如果您之前已经剥离了标签,则知道其基本要点是剥离<和>之间的所有内容。删除文本是非常相似的,除非你删除了>和<之间的所有内容。所以是的,正则表达式可以很好地为您提供剥离文本并留下标签的功能。如果你不想处理它们,它们也可以用来去除标签属性。
这可能会给你一个体面的开始。我对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;
}
}
这是一个很好的开始如果我没有任何其他健壮的方法。有几件事我会尝试DOM或任何其他解析器/库,甚至直接解析之前的正则表达式。首先,我必须保留包含的“文本”,如
线沿线的东西:
pageSource.replaceAll(">.*<", "><");
应该让你开始。
我会明确地追求一个DOM解析器... –
我想避免一个DOM解析的原因是,我想将结果的html用作字符串而不是DOM。但是,我可以使用DOM解析器去除文本,然后将其作为字符串获取。这也行得通,我只想知道我有什么其他选择。 – adiian