我想分析html页面的结构。对于一个页面,我把它作为一个字符串,我想删除文本,只保留html结构。我不想使用DOM解析器,我需要一些健壮的东西,它不仅适用于常规html xhtml。我知道正则表达式足以从字符串中删除html标记,但是它们是否可以用来删除文本并仅保留html标记?
您知道我可以使用的其他选项/框架吗?
答案 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(">.*<", "><");
应该让你开始。