我想分析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