使用狀態分析HTML語法

2021-10-25 05:04:42 字數 1844 閱讀 4123

利用基於字元匹配的對映到狀態的方式,實現解析html文件語法,匹配標籤、文字、屬性、值等。

列出了主要思路和主要**。

if (docstatus.read_starttag.equals(docstatus)) 

else if (tagstatus.read_tag_type.equals(tagstatus))

else if (ch == '/')

else if (ch == '>')

else if (character.isletter(ch))

}else if (tagstatus.read_continue.equals(tagstatus))

} else if (tagstatus.read_tag_attrname_white.equals(tagstatus))

else if (tagstatus.read_tag_attrvalue_white.equals(tagstatus))

else if (tagstatus.read_tag_willattrvalue.equals(tagstatus))

if (tagstatus.read_tag_name.equals(tagstatus))

else if (tagstatus.read_tag_attrname.equals(tagstatus))

else if (ch == '=')

else if (ch == '>')

else

attrname += ch;

} else if (tagstatus.read_tag_attrvalue.equals(tagstatus))

else if (ch == '>')

else if (ch == '\'')

tagstatus = tagstatus.read_tag_attrvalue_quote;

else if (ch == '"')

tagstatus = tagstatus.read_tag_attrvalue_doublequote;

else

attrvalue += ch;

} else if (tagstatus.read_tag_attrvalue_quote.equals(tagstatus))

else if (tagstatus.read_tag_attrvalue_doublequote.equals(tagstatus))

else if (tagstatus.read_tag_willend.equals(tagstatus))

else

tagstatus = tagstatus.read_continue; }

if (tagstatus.read_tag_end.equals(tagstatus))

else if (tagtype.equals("open"))

else if (tagname.touppercase().equals("script"))

else

} else if (tagtype.equals("standard"))

else if (tagtype.equals("close"))

docstatus = docstatus.read_any;

stack.push(docstatus);

} }}if (docstatus.read_any.equals(docstatus))

對簡單html語法測試,顯示如下:

HTML學習 HTML狀態碼

301 moved permanently 永久移動。請求的資源已被永久的移動到新uri,返回資訊會包括新的uri,瀏覽器會自動定向到新uri。今後任何新的請求都應使用新的uri代替 302 found 臨時移動。與301類似。但資源只是臨時被移動。客戶端應繼續使用原有uri 403 forbidd...

HTML語法大全

0 注釋 批註 1 跑馬燈 普通捲動 滑動 預設捲動 來回捲動 向下捲動 向上捲動 向右捲動 向左捲動 捲動次數 設定寬度 設定高度 設定背景顏色 設定捲動距離 設定捲動時間 2 字型效果 標題字 最大 標題字 最小 粗體字 粗體字 強調 斜體字 斜體字 強調 斜體字 表示定義 底線 底線 表示插入...

HTML語法大全

卷標 屬性名稱 簡介 批註 跑馬燈 普通捲動 滑動 預設捲動 來回捲動 向下捲動 向上捲動 向右捲動 向左捲動 捲動次數 設定寬度 設定高度 設定背景顏色 設定捲動距離 設定捲動時間 字型效果 標題字 最大 標題字 最小 粗體字 粗體字 強調 斜體字 斜體字 強調 斜體字 表示定義 底線 底線 表示...