JavaTM 2 Platform
Standard Ed. 6

javax.swing.text.html.parser
類別 Parser

java.lang.Object
  繼承者 javax.swing.text.html.parser.Parser
所有已實作的介面:
DTDConstants
直接已知子類別:
DocumentParser

public class Parser
extends Object
implements DTDConstants

一個簡單的 DTD 驅動的 HTML 解析器。該解析器從 InputStream 讀取 HTML 檔案,並在遇到標記和資料時調用各種方法(在子類別中應覆寫這些方法)。

遺憾的是,存在許多不良實作的 HTML 解析器,結果導致許多不良格式的 HTML 檔案。此解析器嘗試解析大多數 HTML 檔案。這意味著該實作有時偏離有利於 HTML 的 SGML 規範。

該解析器將 \r 和 \r\n 視為 \n。開始標記之後和結束標記之前的換行被忽略,正如 SGML/HTML 規範中指定的那樣。

html 規範不指定如何很好地組合空格。明確地說,不討論下面的情形(注意,此處應使用空格,但我使用了   來強制顯示空格):

'<b>blah <i> <strike> foo' 可以被視為:'<b>blah <i><strike>foo'

以及:'<p><a href="xx"> <em>Using</em></a></p>' 好像被視為:'<p><a href="xx"><em>Using</em></a></p>'

如果 strict 為 false,在遇到中斷串流的標記 (TagElement.breaksFlows) 或尾部空白時,如果未遇到非空(null)白字元,所有空白都將被忽略。看上去該行為與串流行的瀏覽器的行為更接近。

另請參見:
DTD, TagElement, SimpleAttributeSet

欄位摘要
protected  DTD dtd
           
protected  boolean strict
          此標記確定 Parser 在強制執行 SGML 相容性方面是否嚴格。
 
從介面 javax.swing.text.html.parser.DTDConstants 繼承的欄位
ANY, CDATA, CONREF, CURRENT, DEFAULT, EMPTY, ENDTAG, ENTITIES, ENTITY, FIXED, GENERAL, ID, IDREF, IDREFS, IMPLIED, MD, MODEL, MS, NAME, NAMES, NMTOKEN, NMTOKENS, NOTATION, NUMBER, NUMBERS, NUTOKEN, NUTOKENS, PARAMETER, PI, PUBLIC, RCDATA, REQUIRED, SDATA, STARTTAG, SYSTEM
 
建構子摘要
Parser(DTD dtd)
           
 
方法摘要
protected  void endTag(boolean omitted)
          處理結束標記。
protected  void error(String err)
           
protected  void error(String err, String arg1)
           
protected  void error(String err, String arg1, String arg2)
           
protected  void error(String err, String arg1, String arg2, String arg3)
          調用錯誤處理程序。
protected  void flushAttributes()
           
protected  SimpleAttributeSet getAttributes()
           
protected  int getCurrentLine()
           
protected  int getCurrentPos()
           
protected  void handleComment(char[] text)
          在遇到 HTML 註釋時調用。
protected  void handleEmptyTag(TagElement tag)
          在遇到空標記時調用。
protected  void handleEndTag(TagElement tag)
          在遇到結束標記時調用。
protected  void handleEOFInComment()
           
protected  void handleError(int ln, String msg)
          發生了一個錯誤。
protected  void handleStartTag(TagElement tag)
          在遇到開始標記時調用。
protected  void handleText(char[] text)
          在遇到 PCDATA 時調用。
protected  void handleTitle(char[] text)
          在遇到 HTML 標題標記時調用。
protected  TagElement makeTag(Element elem)
           
protected  TagElement makeTag(Element elem, boolean fictional)
          製作 TagElement。
protected  void markFirstTime(Element elem)
          標記在文檔中首次看到標記
 void parse(Reader in)
          在給定 DTD 的情況下,解析 HTML 串流。
 String parseDTDMarkup()
          解析 Document Type Declaration 標記宣告。
protected  boolean parseMarkupDeclarations(StringBuffer strBuff)
          解析標記宣告。
protected  void startTag(TagElement tag)
          處理開始標記。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

欄位詳細資訊

dtd

protected DTD dtd

strict

protected boolean strict
此標記確定 Parser 在強制執行 SGML 相容性方面是否嚴格。如果為 false,則對某些 HTML 建構有誤的通用類別比較寬鬆。無論是否嚴格,都會記錄一個錯誤。

建構子詳細資訊

Parser

public Parser(DTD dtd)
方法詳細資訊

getCurrentLine

protected int getCurrentLine()
返回:
當前解析行的行號

makeTag

protected TagElement makeTag(Element elem,
                             boolean fictional)
製作 TagElement。


makeTag

protected TagElement makeTag(Element elem)

getAttributes

protected SimpleAttributeSet getAttributes()

flushAttributes

protected void flushAttributes()

handleText

protected void handleText(char[] text)
在遇到 PCDATA 時調用。


handleTitle

protected void handleTitle(char[] text)
在遇到 HTML 標題標記時調用。


handleComment

protected void handleComment(char[] text)
在遇到 HTML 註釋時調用。


handleEOFInComment

protected void handleEOFInComment()

handleEmptyTag

protected void handleEmptyTag(TagElement tag)
                       throws ChangedCharSetException
在遇到空標記時調用。

拋出:
ChangedCharSetException

handleStartTag

protected void handleStartTag(TagElement tag)
在遇到開始標記時調用。


handleEndTag

protected void handleEndTag(TagElement tag)
在遇到結束標記時調用。


handleError

protected void handleError(int ln,
                           String msg)
發生了一個錯誤。


error

protected void error(String err,
                     String arg1,
                     String arg2,
                     String arg3)
調用錯誤處理程序。


error

protected void error(String err,
                     String arg1,
                     String arg2)

error

protected void error(String err,
                     String arg1)

error

protected void error(String err)

startTag

protected void startTag(TagElement tag)
                 throws ChangedCharSetException
處理開始標記。將新標記推送到標記堆疊(stack)空間。在屬性列表中檢查所需的屬性。

拋出:
ChangedCharSetException

endTag

protected void endTag(boolean omitted)
處理結束標記。結束標記從標記堆疊(stack)空間中彈出。


markFirstTime

protected void markFirstTime(Element elem)
標記在文檔中首次看到標記


parseDTDMarkup

public String parseDTDMarkup()
                      throws IOException
解析 Document Type Declaration 標記宣告。當前忽略它。

拋出:
IOException

parseMarkupDeclarations

protected boolean parseMarkupDeclarations(StringBuffer strBuff)
                                   throws IOException
解析標記宣告。當前僅處理 Document Type Declaration 標記。如果為標記宣告,則返回 true,否則返回 false。

拋出:
IOException

parse

public void parse(Reader in)
           throws IOException
在給定 DTD 的情況下,解析 HTML 串流。

拋出:
IOException

getCurrentPos

protected int getCurrentPos()

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only