Spec-Zone.ru › OpenJDK 25

Класс 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, поэтому информация не теряется. Благодаря этому многие существующие действия работают так, что пользователь может вводить текст, нажимать клавишу Return, 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

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

Конструктор Описание
HTMLReader(int offset)
Создаёт HTMLReader с глубиной извлечения и добавления по умолчанию и без тега для вставки.
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

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

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

parseBuffer

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

charAttr

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

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

HTMLReader

public HTMLReader(int offset)
Создаёт HTMLReader с глубиной извлечения и добавления по умолчанию и без тега для вставки.
Параметры:
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 — значение 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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/swing/text/html/HTMLDocument.HTMLReader.html

Spec-Zone.ru

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