Spec-Zone.ru › OpenJDK 21

Класс Parser

java.lang.Object
javax.swing.text.html.parser.Parser
Все реализованные интерфейсы:
DTDConstants
Прямые известные подклассы:
DocumentParser
public class Parser extends Object implements DTDConstants
Простой HTML-парсер, управляемый DTD. Парсер считывает файл HTML из потока InputStream и вызывает различные методы (которые должны быть переопределены в подклассе) при обнаружении тегов и данных.

К сожалению, существует много плохо реализованных 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>Using</em></a></p>' который, похоже, обрабатывается как: '<p><a href="xx"><em>Using</em></a></p>'

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

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

Краткое описание полей

Модификатор и тип Поле Описание
protected DTD 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)
Создаёт парсер с указанным dtd.

Краткое описание методов

Модификатор и тип Метод Описание
protected void endTag(boolean omitted)
Обработка закрывающего тега.
protected void error(String err)
Вызывает обработчик ошибок с 1-м, 2-м и 3-м аргументами сообщения об ошибке "?".
protected void error(String err, String arg1)
Вызывает обработчик ошибок со 2-м и 3-м аргументами сообщения об ошибке "?".
protected void error(String err, String arg1, String arg2)
Вызывает обработчик ошибок с 3-м аргументом сообщения об ошибке "?".
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()
Вызывается при завершении содержимого без закрытия HTML-комментария.
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)
Создаёт TagElement.
protected TagElement makeTag(Element elem, boolean fictional)
Создаёт TagElement.
protected void markFirstTime(Element elem)
Помечает первый случай обнаружения тега в документе
void parse(Reader in)
Анализирует HTML-поток, используя DTD.
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
DTD.

strict

protected boolean strict
Этот флаг определяет, будет ли парсер строго следовать правилам SGML. Если false, он будет более снисходительным к некоторым распространённым ошибкам в конструкциях HTML. В любом случае, независимо от значения флага, об ошибке будет записано.

Подробное описание конструкторов

Parser

public Parser(DTD dtd)
Создаёт парсер со указанным dtd.
Параметры:
dtd - DTD.

Подробное описание методов

getCurrentLine

protected int getCurrentLine()
Возвращает номер строки, которая в данный момент анализируется.
Возвращает:
номер строки, которая в данный момент анализируется

makeTag

protected TagElement makeTag(Element elem, boolean fictional)
Создаёт элемент TagElement.
Параметры:
elem - элемент, хранящий определение тега
fictional - значение флага "fictional", которое нужно установить для тега
Возвращает:
созданный TagElement

makeTag

protected TagElement makeTag(Element elem)
Создаёт элемент TagElement.
Параметры:
elem - элемент, хранящий определение тега
Возвращает:
созданный TagElement

getAttributes

protected SimpleAttributeSet getAttributes()
Возвращает атрибуты текущего тега.
Возвращает:
SimpleAttributeSet, содержащий атрибуты

flushAttributes

protected void flushAttributes()
Удаляет текущие атрибуты.

handleText

protected void handleText(char[] text)
Вызывается при обнаружении PCDATA.
Параметры:
text - текст раздела

handleTitle

protected void handleTitle(char[] text)
Вызывается при обнаружении тега HTML заголовка.
Параметры:
text - текст заголовка

handleComment

protected void handleComment(char[] text)
Вызывается при обнаружении комментария HTML.
Параметры:
text - обрабатываемый комментарий

handleEOFInComment

protected void handleEOFInComment()
Вызывается, когда содержимое завершается без закрытия комментария HTML.

handleEmptyTag

protected void handleEmptyTag(TagElement tag) throws ChangedCharSetException
Вызывается при обнаружении пустого тега.
Параметры:
tag - обрабатываемый тег
Исключения:
ChangedCharSetException - если кодировка документа была изменена

handleStartTag

protected void handleStartTag(TagElement tag)
Вызывается при обнаружении открывающего тега.
Параметры:
tag - обрабатываемый тег

handleEndTag

protected void handleEndTag(TagElement tag)
Вызывается при обнаружении закрывающего тега.
Параметры:
tag - обрабатываемый тег

handleError

protected void handleError(int ln, String msg)
Произошла ошибка.
Параметры:
ln - номер строки, содержащей ошибку
msg - сообщение об ошибке

error

protected void error(String err, String arg1, String arg2, String arg3)
Вызывает обработчик ошибок.
Параметры:
err - тип ошибки
arg1 - первый аргумент сообщения об ошибке
arg2 - второй аргумент сообщения об ошибке
arg3 - третий аргумент сообщения об ошибке

error

protected void error(String err, String arg1, String arg2)
Вызывает обработчик ошибок с третьим аргументом сообщения об ошибке "?".
Параметры:
err - тип ошибки
arg1 - первый аргумент сообщения об ошибке
arg2 - второй аргумент сообщения об ошибке

error

protected void error(String err, String arg1)
Вызывает обработчик ошибок со вторым и третьим аргументами сообщения об ошибке "?".
Параметры:
err - тип ошибки
arg1 - первый аргумент сообщения об ошибке

error

protected void error(String err)
Вызывает обработчик ошибок с первым, вторым и третьим аргументами сообщения об ошибке "?".
Параметры:
err - тип ошибки

startTag

protected void startTag(TagElement tag) throws ChangedCharSetException
Обрабатывает открывающий тег. Новый тег добавляется в стек тегов. Проверяется список атрибутов на наличие обязательных атрибутов.
Параметры:
tag - тег
Исключения:
ChangedCharSetException - если кодировка документа была изменена

endTag

protected void endTag(boolean omitted)
Обрабатывает закрывающий тег. Закрыващий тег удаляется из стека тегов.
Параметры:
omitted - true если тега фактически нет в документе, но предполагается парсером

markFirstTime

protected void markFirstTime(Element elem)
Помечает первый раз, когда тег встретился в документе
Параметры:
elem - элемент, представленный тегом

parseDTDMarkup

public String parseDTDMarkup() throws IOException
Парсит декларацию объявления типа документа. В данный момент игнорируется.
Возвращает:
строковое представление декларации объявления
Исключения:
IOException - если произошла ошибка ввода/вывода

parseMarkupDeclarations

protected boolean parseMarkupDeclarations(StringBuffer strBuff) throws IOException
Парсит декларации разметки. В настоящее время обрабатывается только декларация объявления типа документа. Возвращает true, если это декларация разметки, false в противном случае.
Параметры:
strBuff - декларация разметки
Возвращает:
true если это допустимая декларация разметки; в противном случае false
Исключения:
IOException - если произошла ошибка ввода/вывода

parse

public void parse(Reader in) throws IOException
Анализирует поток HTML, учитывая DTD.
Параметры:
in - поток для чтения исходного кода
Исключения:
IOException - если произошла ошибка ввода/вывода

getCurrentPos

protected int getCurrentPos()
Возвращает текущую позицию.
Возвращает:
текущую позицию

© 1993, 2023, 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.
https://docs.oracle.com/en/java/javase/21/docs/api/java.desktop/javax/swing/text/html/parser/Parser.html

Spec-Zone.ru

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