Класс 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.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 |
class |
HTMLDocument.HTMLReader.ParagraphAction |
class |
HTMLDocument.HTMLReader.PreAction |
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(int offset,
int popDepth,
int pushDepth,
HTML.Tag insertTag) |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
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 |
handleComment(char[] data,
int pos) |
void |
handleEndOfLineString(String eol) Вызывается после того, как поток был проанализирован, но перед |
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) Добавляет заданное содержимое в документ текстового поля. |
Методы, унаследованные от класса javax.swing.text.html.HTMLEditorKit.ParserCallback
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
public HTMLReader(int offset,
int popDepth,
int pushDepth,
HTML.Tag insertTag) Методы
flush
public void flush()
throws BadLocationException Последний метод, вызываемый на ридере. Он позволяет сбросить любые ожидающие изменения в документ. Поскольку в данный момент загрузка происходит синхронно, весь набор изменений помещается в этом месте.
- Overrides:
-
flushв классеHTMLEditorKit.ParserCallback - Throws:
BadLocationException
handleText
public void handleText(char[] data,
int pos) Вызывается парсером для указания, что был встречен блок текста.
- Overrides:
-
handleTextв классеHTMLEditorKit.ParserCallback
handleStartTag
public void handleStartTag(HTML.Tag t,
MutableAttributeSet a,
int pos) Обратный вызов от парсера. Маршрут к соответствующему обработчику для тега.
- Overrides:
-
handleStartTagв классеHTMLEditorKit.ParserCallback
handleComment
public void handleComment(char[] data,
int pos) - Overrides:
-
handleCommentв классеHTMLEditorKit.ParserCallback
handleEndTag
public void handleEndTag(HTML.Tag t,
int pos) Обратный вызов от парсера. Маршрут к соответствующему обработчику для тега.
- Overrides:
-
handleEndTagв классеHTMLEditorKit.ParserCallback
handleSimpleTag
public void handleSimpleTag(HTML.Tag t,
MutableAttributeSet a,
int pos) Обратный вызов от парсера. Маршрут к соответствующему обработчику для тега.
- Overrides:
-
handleSimpleTagв классеHTMLEditorKit.ParserCallback
handleEndOfLineString
public void handleEndOfLineString(String eol)
Вызывается после анализа потока, но перед flush. eol будет одним из \n, \r или \r\n, в зависимости от того, какой из них был встречен чаще всего при анализе потока.
- Overrides:
-
handleEndOfLineStringв классеHTMLEditorKit.ParserCallback - Since:
- 1.3
registerTag
protected void registerTag(HTML.Tag t,
HTMLDocument.HTMLReader.TagAction a) Регистрирует обработчик для заданного тега. По умолчанию все известные теги будут зарегистрированы. Это можно использовать для изменения обработки определенного тега или для добавления поддержки пользовательских тегов.
pushCharacterStyle
protected void pushCharacterStyle()
Помещает текущий стиль символов в стек в качестве подготовки к формированию нового вложенного стиля символов.
popCharacterStyle
protected void popCharacterStyle()
Извлекает ранее помещенный стиль символов из стека, чтобы вернуться к предыдущему стилю.
textAreaContent
protected void textAreaContent(char[] data)
Добавляет заданное содержимое в документ текстового поля. Этот метод вызывается, когда мы находимся в контексте текстового поля. Поэтому весь видимый текст относится к текстовому полю и, следовательно, добавляется в TextAreaDocument, связанный с текстовым полем.
preContent
protected void preContent(char[] data)
Добавляет заданное содержимое, которое было встречено в элементе PRE. Этот метод синтезирует строки, чтобы содержать последовательности текста, и вызывает addContent для фактического добавления текста.
blockOpen
protected void blockOpen(HTML.Tag t,
MutableAttributeSet attr) Добавляет инструкцию в буфер разбора, чтобы создать элемент блока с заданными атрибутами.
blockClose
protected void blockClose(HTML.Tag t)
Добавляет инструкцию в буфер разбора, чтобы закрыть элемент блока заданного типа.
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) Добавляет содержимое, в основном полностью заданное в наборе атрибутов.
© 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.