javax.swing.text.html.parser

Class DocumentParser

Implemented Interfaces:
DTDConstants

public class DocumentParser
extends Parser
implements DTDConstants

A simple error-tolerant HTML parser that uses a DTD document to access data on the possible tokens, arguments and syntax.

The parser reads an HTML content from a Reader and calls various notifying methods (which should be overridden in a subclass) when tags or data are encountered.

Some HTML elements need no opening or closing tags. The task of this parser is to invoke the tag handling methods also when the tags are not explicitly specified and must be supposed using information, stored in the DTD. For example, parsing the document

<table><tr><td>a<td>b<td>c</tr>
will invoke exactly the handling methods exactly in the same order (and with the same parameters) as if parsing the document:
<html><head></head><body><table>< tbody><tr><td>a</td><td>b </td><td>c</td></tr>< /tbody></table></body></html> (supposed tags are given in italics). The parser also supports obsolete elements of HTML syntax.

In this implementation, DocumentParser is directly derived from its ancestor without changes of functionality.

Field Summary

Fields inherited from class javax.swing.text.html.parser.Parser

dtd, strict

Fields inherited from interface 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

Constructor Summary

DocumentParser(DTD a_dtd)
Creates a new parser that uses the given DTD to access data on the possible tokens, arguments and syntax.

Method Summary

protected void
handleComment(char[] comment)
Handle HTML comment.
protected void
handleEmptyTag(TagElement tag)
Handle the tag with no content, like <br>.
protected void
handleEndTag(TagElement tag)
The method is called when the HTML closing tag ((like </table>) is found or if the parser concludes that the one should be present in the current position.
protected void
handleError(int line, String message)
protected void
handleStartTag(TagElement tag)
The method is called when the HTML opening tag ((like <table>) is found or if the parser concludes that the one should be present in the current position.
protected void
handleText(char[] text)
Handle the text section.
void
parse(Reader reader, HTMLEditorKit.ParserCallback aCallback, boolean ignoreCharSet)
Parses the HTML document, calling methods of the provided callback.

Methods inherited from class javax.swing.text.html.parser.Parser

endTag, error, error, error, error, flushAttributes, getAttributes, getCurrentLine, getCurrentPos, handleComment, handleEOFInComment, handleEmptyTag, handleEndTag, handleError, handleStartTag, handleText, handleTitle, makeTag, makeTag, markFirstTime, parse, parseDTDMarkup, parseMarkupDeclarations, startTag

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Details

DocumentParser

public DocumentParser(DTD a_dtd)
Creates a new parser that uses the given DTD to access data on the possible tokens, arguments and syntax. There is no single - step way to get a default DTD; you must either refer to the implementation - specific packages, write your own DTD or obtain the working instance of parser in other way, for example, by calling HTMLEditorKit.getParser().
Parameters:
a_dtd - a DTD to use.

Method Details

handleComment

protected void handleComment(char[] comment)
Handle HTML comment. The default method returns without action.
Overrides:
handleComment in interface Parser
Parameters:
comment - the comment being handled

handleEmptyTag

protected void handleEmptyTag(TagElement tag)
            throws ChangedCharSetException
Handle the tag with no content, like <br>. The method is called for the elements that, in accordance with the current DTD, has an empty content.
Overrides:
handleEmptyTag in interface Parser
Parameters:
tag - the tag being handled.

handleEndTag

protected void handleEndTag(TagElement tag)
The method is called when the HTML closing tag ((like </table>) is found or if the parser concludes that the one should be present in the current position.
Overrides:
handleEndTag in interface Parser
Parameters:
tag - The tag being handled

handleError

protected void handleError(int line,
                           String message)
Overrides:
handleError in interface Parser

handleStartTag

protected void handleStartTag(TagElement tag)
The method is called when the HTML opening tag ((like <table>) is found or if the parser concludes that the one should be present in the current position.
Overrides:
handleStartTag in interface Parser
Parameters:
tag - The tag being handled

handleText

protected void handleText(char[] text)
Handle the text section.
Overrides:
handleText in interface Parser
Parameters:
text - a section text.

parse

public void parse(Reader reader,
                  HTMLEditorKit.ParserCallback aCallback,
                  boolean ignoreCharSet)
            throws IOException
Parses the HTML document, calling methods of the provided callback. This method must be multithread - safe.
Parameters:
reader - The reader to read the HTML document from
aCallback - The callback that is notifyed about the presence of HTML elements in the document.
ignoreCharSet - If thrue, any charset changes during parsing are ignored.
Throws:
IOException -

DocumentParser.java -- A parser for HTML documents. Copyright (C) 2005 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.