Spec-Zone.ru › OpenJDK 8

Класс Parser

  • java.lang.Object
    • javax.swing.text.html.parser.Parser
Все реализуемые интерфейсы:
DTDConstants
Прямые известные подклассы:
DocumentParser

public class Parser
extends Object
implements DTDConstants

Простой HTML-парсер, управляемый DTD. Парсер считывает HTML-файл из потока ввода и вызывает различные методы (которые должны быть переопределены в подклассе) при обнаружении тегов и данных.

К сожалению, существует много плохо реализованных HTML-парсеров, а это означает, что существует много плохо отформатированных HTML-файлов. Этот парсер пытается разобрать большинство HTML-файлов. Это означает, что реализация иногда отклоняется от спецификации SGML в пользу HTML.

Парсер обрабатывает \r и \r\n как \n. Пробелы после открывающего тега и перед закрывающим тегом игнорируются, как указано в спецификации SGML/HTML.

Спецификация html не очень хорошо определяет, как объединяются пробелы. В частности, не обсуждаются следующие сценарии (обратите внимание, что здесь должен использоваться пробел, но я использую &nbsp для принудительного отображения пробела):

'<b>blah <i> <strike> foo', который может быть обработан как: '<b>blah <i><strike>foo'

а также: '<p><a href="xx"> <em>Использование</em></a></p>', который, по-видимому, обрабатывается как: '<p><a href="xx"><em>Использование</em></a></p>'

Если strict ложно, при обнаружении тега, нарушающего поток (TagElement.breaksFlows) или заключительных пробелов, все пробелы игнорируются до тех пор, пока не будет обнаружен не пробельный символ. Это, по-видимому, обеспечивает поведение, более близкое к поведению популярных браузеров.

См. также:
DTD, TagElement, SimpleAttributeSet

Поля

Модификатор и тип Поле и описание
protected DTD dtd
protected boolean strict

Этот флаг определяет, будет ли парсер строго следовать совместимости 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)

Разбор HTML-потока, используя DTD.

String parseDTDMarkup()

Разбирает объявление типа документа (Document Declaration Type).

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

Этот флаг определяет, будет ли парсер строго следовать совместимости 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

Обработка открывающего тега. Новый тег добавляется в стек тегов. Проверяется список атрибутов на наличие обязательных атрибутов.

Исключение:
ChangedCharSetException

endTag

protected void endTag(boolean omitted)

Обработка закрывающего тега. Закрыващий тег извлекается из стека тегов.

markFirstTime

protected void markFirstTime(Element elem)

Помечает первый раз, когда тег был обнаружен в документе

parseDTDMarkup

public String parseDTDMarkup()
                      throws IOException

Разбирает объявление типа документа (Document Declaration Type). В данный момент игнорируется.

Исключение:
IOException

parseMarkupDeclarations

protected boolean parseMarkupDeclarations(StringBuffer strBuff)
                                   throws IOException

Разбор объявлений разметки. В данный момент обрабатывается только объявление типа документа. Возвращает true, если это объявление разметки, иначе false.

Исключение:
IOException

parse

public void parse(Reader in)
           throws IOException

Разбор HTML-потока, используя DTD.

Исключение:
IOException

getCurrentPos

protected int getCurrentPos()

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API