Spec-Zone.ru › OpenJDK 27

Класс HTMLDocument.HTMLReader

java.lang.Object
javax.swing.text.html.HTMLEditorKit.ParserCallback
javax.swing.text.html.HTMLDocument.HTMLReader
Внешний класс:
HTMLDocument
public class HTMLDocument.HTMLReader extends HTMLEditorKit.ParserCallback
Средство чтения HTML для загрузки HTML-документа со структурой HTML-элементов. Это набор обратных вызовов анализатора, реализованных для создания набора элементов с атрибутами. При анализе формируются токены (ElementSpec), описывающие требуемое поддерево элементов, а затем оно добавляется в документ под защитой блокировки на запись с помощью метода insert внешнего класса документа.

Средство чтения можно настроить, зарегистрировав действия (типа HTMLDocument.HTMLReader.TagAction), определяющие способ обработки действия. Идея предоставляемых действий заключается в том, что наиболее естественные операции редактирования текста можно реализовать, если структура элементов сводится к абзацам с фрагментами текста, имеющими некоторый стиль. Некоторые элементы естественнее задавать структурно, поэтому выше абзацев должна допускаться произвольная структура, которую, однако, потребуется редактировать структурными действиями. Это означает, что некоторые HTML-элементы в анализируемом потоке будут преобразованы в атрибуты, а в некоторых случаях будут созданы абзацы. При преобразовании HTML-элементов в атрибуты ключ атрибута будет иметь тип HTML.Tag, а значение — тип AttributeSet, чтобы не терялась никакая информация. Это позволяет работать многим существующим действиям: пользователь может вводить текст, нажимать клавишу возврата, клавиши Backspace и Delete и т. д., получая ожидаемый результат. Можно создавать выделения, добавлять или удалять атрибуты и т. д. С этой точки зрения работу средства чтения можно разделить на следующие типы задач:

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

В настоящее время не поддерживаются <APPLET>, <PARAM>, <MAP>, <AREA>, <LINK>, <SCRIPT> и <STYLE>.

Назначение описанных действий для тегов, определенных в HTML.Tag, показано в следующей таблице.

Теги HTML и назначенные им действия
Тег Действие
HTML.Tag.A CharacterAction
HTML.Tag.ADDRESS CharacterAction
HTML.Tag.APPLET HiddenAction
HTML.Tag.AREA AreaAction
HTML.Tag.B CharacterAction
HTML.Tag.BASE BaseAction
HTML.Tag.BASEFONT CharacterAction
HTML.Tag.BIG CharacterAction
HTML.Tag.BLOCKQUOTE BlockAction
HTML.Tag.BODY BlockAction
HTML.Tag.BR SpecialAction
HTML.Tag.CAPTION BlockAction
HTML.Tag.CENTER BlockAction
HTML.Tag.CITE CharacterAction
HTML.Tag.CODE CharacterAction
HTML.Tag.DD BlockAction
HTML.Tag.DFN CharacterAction
HTML.Tag.DIR BlockAction
HTML.Tag.DIV BlockAction
HTML.Tag.DL BlockAction
HTML.Tag.DT ParagraphAction
HTML.Tag.EM CharacterAction
HTML.Tag.FONT CharacterAction
HTML.Tag.FORM С версии 1.4 — BlockAction
HTML.Tag.FRAME SpecialAction
HTML.Tag.FRAMESET BlockAction
HTML.Tag.H1 ParagraphAction
HTML.Tag.H2 ParagraphAction
HTML.Tag.H3 ParagraphAction
HTML.Tag.H4 ParagraphAction
HTML.Tag.H5 ParagraphAction
HTML.Tag.H6 ParagraphAction
HTML.Tag.HEAD HeadAction
HTML.Tag.HR SpecialAction
HTML.Tag.HTML BlockAction
HTML.Tag.I CharacterAction
HTML.Tag.IMG SpecialAction
HTML.Tag.INPUT FormAction
HTML.Tag.ISINDEX IsndexAction
HTML.Tag.KBD CharacterAction
HTML.Tag.LI BlockAction
HTML.Tag.LINK LinkAction
HTML.Tag.MAP MapAction
HTML.Tag.MENU BlockAction
HTML.Tag.META MetaAction
HTML.Tag.NOFRAMES BlockAction
HTML.Tag.OBJECT SpecialAction
HTML.Tag.OL BlockAction
HTML.Tag.OPTION FormAction
HTML.Tag.P ParagraphAction
HTML.Tag.PARAM HiddenAction
HTML.Tag.PRE PreAction
HTML.Tag.SAMP CharacterAction
HTML.Tag.SCRIPT HiddenAction
HTML.Tag.SELECT FormAction
HTML.Tag.SMALL CharacterAction
HTML.Tag.STRIKE CharacterAction
HTML.Tag.S CharacterAction
HTML.Tag.STRONG CharacterAction
HTML.Tag.STYLE StyleAction
HTML.Tag.SUB CharacterAction
HTML.Tag.SUP CharacterAction
HTML.Tag.TABLE BlockAction
HTML.Tag.TD BlockAction
HTML.Tag.TEXTAREA FormAction
HTML.Tag.TH BlockAction
HTML.Tag.TITLE TitleAction
HTML.Tag.TR BlockAction
HTML.Tag.TT CharacterAction
HTML.Tag.U CharacterAction
HTML.Tag.UL BlockAction
HTML.Tag.VAR CharacterAction

После обнаружения </html> уведомления действий прекращаются.

Краткое описание вложенных классов

Модификатор и тип Класс Описание
class  HTMLDocument.HTMLReader.BlockAction
Действие, назначаемое по умолчанию для обработки задачи «Блок» средства чтения.
class  HTMLDocument.HTMLReader.CharacterAction
Действие, назначаемое по умолчанию для обработки задачи «Символьный элемент» средства чтения.
class  HTMLDocument.HTMLReader.FormAction
Действие для поддержки форм, создающее все элементы, используемые для представления элементов управления формы.
class  HTMLDocument.HTMLReader.HiddenAction
Действие, назначаемое по умолчанию для обработки задачи «Скрытый элемент» средства чтения.
class  HTMLDocument.HTMLReader.IsindexAction
Действие, назначаемое по умолчанию для обработки задачи Isindex средства чтения.
class  HTMLDocument.HTMLReader.ParagraphAction
Действие, назначаемое по умолчанию для обработки задачи «Абзац» средства чтения.
class  HTMLDocument.HTMLReader.PreAction
Действие, назначаемое по умолчанию для обработки задачи блока Pre средства чтения.
class  HTMLDocument.HTMLReader.SpecialAction
Действие, назначаемое по умолчанию для обработки задачи «Специальный элемент» средства чтения.
class  HTMLDocument.HTMLReader.TagAction
Действие, выполняемое в ответ на разбор тега.

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

Модификатор и тип Поле Описание
protected MutableAttributeSet charAttr
Текущий набор символьных атрибутов.
protected Vector<DefaultStyledDocument.ElementSpec> parseBuffer
Буфер для построения элементов.

Поля, объявленные в классе HTMLEditorKit.ParserCallback

IMPLIED
Модификатор и тип Поле Описание
static final Object IMPLIED
Передается как атрибут в наборе атрибутов, чтобы указать, что элемент является подразумеваемым. Например, строка '<>foo<\t>' содержит подразумеваемый элемент html и подразумеваемый элемент body.

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

Конструктор Описание
HTMLReader(int offset)
Создает HTMLReader с глубиной pop и push по умолчанию и без тега для вставки.
HTMLReader(int offset, int popDepth, int pushDepth, HTML.Tag insertTag)
Создает HTMLReader.

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

Модификатор и тип Метод Описание
protected void addContent(char[] data, int offs, int length)
Добавляет текст с текущими символьными атрибутами.
protected void addContent(char[] data, int offs, int length, boolean generateImpliedPIfNecessary)
Добавляет текст с текущими символьными атрибутами.
protected void addSpecialElement(HTML.Tag t, MutableAttributeSet a)
Добавляет содержимое, заданное практически целиком в наборе атрибутов.
protected void blockClose(HTML.Tag t)
Добавляет в буфер анализа инструкцию закрыть блочный элемент заданного типа.
protected void blockOpen(HTML.Tag t, MutableAttributeSet attr)
Добавляет в буфер анализа инструкцию создать блочный элемент с заданными атрибутами.
void flush()
Последний метод, вызываемый для средства чтения.
void handleEndOfLineString(String eol)
Вызывается после анализа потока, но до flush.
void handleEndTag(HTML.Tag t, int pos)
Обратный вызов анализатора.
void handleSimpleTag(HTML.Tag t, MutableAttributeSet a, int pos)
Обратный вызов анализатора.
void handleStartTag(HTML.Tag t, MutableAttributeSet a, int pos)
Обратный вызов анализатора.
void handleText(char[] data, int pos)
Вызывается анализатором, чтобы сообщить об обнаружении блока текста.
protected void popCharacterStyle()
Извлекает из стека ранее помещенный туда стиль символов, чтобы вернуться к предыдущему стилю.
protected void preContent(char[] data)
Добавляет заданное содержимое, обнаруженное в элементе PRE.
protected void pushCharacterStyle()
Помещает текущий стиль символов в стек, чтобы подготовиться к созданию нового вложенного стиля символов.
protected void registerTag(HTML.Tag t, HTMLDocument.HTMLReader.TagAction a)
Регистрирует обработчик для заданного тега.
protected void textAreaContent(char[] data)
Добавляет заданное содержимое в документ текстовой области.

Методы, объявленные в классе HTMLEditorKit.ParserCallback

handleComment, handleError
Модификатор и тип Метод Описание
void handleComment(char[] data, int pos)
Вызывается анализатором, чтобы сообщить об обнаружении блока комментария.
void handleError(String errorMsg, int pos)
Обратный вызов анализатора.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли другой объект этому объекту.
protected void finalize()
Устарело, подлежит удалению: этот элемент API будет удален в будущей версии.
Финализация устарела и будет удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого объекта Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени.

Подробное описание полей

parseBuffer

protected Vector<DefaultStyledDocument.ElementSpec> parseBuffer
Буфер для построения элементов.

charAttr

protected MutableAttributeSet charAttr
Текущий набор символьных атрибутов.

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

HTMLReader

public HTMLReader(int offset)
Создает HTMLReader с глубиной pop и push по умолчанию и без тега для вставки.
Параметры:
offset — начальное смещение

HTMLReader

public HTMLReader(int offset, int popDepth, int pushDepth, HTML.Tag insertTag)
Создает HTMLReader.
Параметры:
offset — начальное смещение
popDepth — количество родительских элементов, на которое нужно подняться перед вставкой нового элемента
pushDepth — количество родительских элементов, на которое нужно спуститься (относительно popDepth) перед вставкой
insertTag — тег для вставки (может иметь значение null)

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

flush

public void flush() throws BadLocationException
Последний метод, вызываемый для средства чтения. Он позволяет записать в документ все ожидающие изменения. Поскольку в настоящее время загрузка выполняется синхронно, весь набор изменений добавляется в этот момент.
Переопределяет:
flush в классе HTMLEditorKit.ParserCallback
Выбрасывает:
BadLocationException — если заданная позиция не является допустимым местоположением в связанном документе.

handleText

public void handleText(char[] data, int pos)
Вызывается анализатором, чтобы сообщить об обнаружении блока текста.
Переопределяет:
handleText в классе HTMLEditorKit.ParserCallback
Параметры:
data — данные
pos — позиция

handleStartTag

public void handleStartTag(HTML.Tag t, MutableAttributeSet a, int pos)
Обратный вызов анализатора. Передает тег соответствующему обработчику.
Переопределяет:
handleStartTag в классе HTMLEditorKit.ParserCallback
Параметры:
t — тег HTML
a — набор атрибутов
pos — позиция

handleEndTag

public void handleEndTag(HTML.Tag t, int pos)
Обратный вызов анализатора. Передает тег соответствующему обработчику.
Переопределяет:
handleEndTag в классе HTMLEditorKit.ParserCallback
Параметры:
t — тег HTML
pos — позиция

handleSimpleTag

public void handleSimpleTag(HTML.Tag t, MutableAttributeSet a, int pos)
Обратный вызов анализатора. Передает тег соответствующему обработчику.
Переопределяет:
handleSimpleTag в классе HTMLEditorKit.ParserCallback
Параметры:
t — тег HTML
a — набор атрибутов
pos — позиция

handleEndOfLineString

public void handleEndOfLineString(String eol)
Вызывается после анализа потока, но до flush. eol будет равен одному из значений \n, \r или \r\n — тому, которое чаще всего встречается при анализе потока.
Переопределяет:
handleEndOfLineString в классе HTMLEditorKit.ParserCallback
Параметры:
eol — значение конца строки
С версии:
1.3

registerTag

protected void registerTag(HTML.Tag t, HTMLDocument.HTMLReader.TagAction a)
Регистрирует обработчик для заданного тега. По умолчанию регистрируются все известные теги. Это можно использовать, чтобы изменить обработку определенного тега или добавить поддержку пользовательских тегов.
Параметры:
t — тег HTML
a — обработчик действия для тега

pushCharacterStyle

protected void pushCharacterStyle()
Помещает текущий стиль символов в стек, чтобы подготовиться к созданию нового вложенного стиля символов.

popCharacterStyle

protected void popCharacterStyle()
Извлекает из стека ранее помещенный туда стиль символов, чтобы вернуться к предыдущему стилю.

textAreaContent

protected void textAreaContent(char[] data)
Добавляет заданное содержимое в документ текстовой области. Этот метод вызывается в контексте текстовой области. Поэтому весь видимый текст относится к текстовой области и добавляется в связанный с ней TextAreaDocument.
Параметры:
data — заданное содержимое

preContent

protected void preContent(char[] data)
Добавляет заданное содержимое, обнаруженное в элементе PRE. Для размещения фрагментов текста создаются строки, а для фактического добавления текста вызывается addContent.
Параметры:
data — заданное содержимое

blockOpen

protected void blockOpen(HTML.Tag t, MutableAttributeSet attr)
Добавляет в буфер анализа инструкцию создать блочный элемент с заданными атрибутами.
Параметры:
t — тег HTML
attr — набор атрибутов

blockClose

protected void blockClose(HTML.Tag t)
Добавляет в буфер анализа инструкцию закрыть блочный элемент заданного типа.
Параметры:
t — тег HTML

addContent

protected void addContent(char[] data, int offs, int length)
Добавляет текст с текущими символьными атрибутами.
Параметры:
data — добавляемое содержимое
offs — начальное смещение
length — длина

addContent

protected void addContent(char[] data, int offs, int length, boolean generateImpliedPIfNecessary)
Добавляет текст с текущими символьными атрибутами.
Параметры:
data — добавляемое содержимое
offs — начальное смещение
length — длина
generateImpliedPIfNecessary — указывает, следует ли создавать подразумеваемые абзацы

addSpecialElement

protected void addSpecialElement(HTML.Tag t, MutableAttributeSet a)
Добавляет содержимое, заданное практически целиком в наборе атрибутов.
Параметры:
t — тег HTML
a — набор атрибутов

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, где приведены более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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