Spec-Zone.ru › OpenJDK 24

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

Поля, объявленные в классе javax.swing.text.html.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)
Добавляет указанный контент в документ textarea.

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

handleComment, handleError

Методы, объявленные в классе java.lang.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)
Добавляет заданные данные в документ textarea. Этот метод вызывается, когда мы находимся в контексте textarea. Поэтому весь видимый текст принадлежит textarea и добавляется в связанный с ним 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 - набор атрибутов

© 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/swing/text/html/HTMLDocument.HTMLReader.html

Spec-Zone.ru

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