Spec-Zone.ru › OpenJDK 24

Класс DocumentParser

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

Этот класс уведомляет обратный вызов обо всех допустимых тегах, а также о тегах, которые подразумеваются, но не указаны явно. Например, в строке HTML (<p>blah) определен только тег p. Обратный вызов увидит следующие методы:

  1. handleStartTag(html, ...)
  2. handleStartTag(head, ...)
  3. handleEndTag(head)
  4. handleStartTag(body, ...)
  5. handleStartTag(p, ...)
  6. handleText(...)
  7. handleEndTag(p)
  8. handleEndTag(body)
  9. handleEndTag(html)
Элементы в курсиве подразумеваются, то есть, хотя они не были явно указаны, для корректного HTML они должны были присутствовать (head не нужен, но всё равно генерируется). Для тегов, которые подразумеваются, аргумент AttributeSet будет иметь значение Boolean.TRUE для ключа HTMLEditorKit.ParserCallback.IMPLIED.

HTML.Attributes определяет перечисление безопасных типов атрибутов HTML. Если ключ атрибута тега определен в HTML.Attribute, то будет использоваться HTML.Attribute, в противном случае будет использована строка. Например, <p foo=bar class=neat> имеет два атрибута. foo не определен в HTML.Attribute, а class есть, поэтому AttributeSet будет содержать два значения: HTML.Attribute.CLASS со строковым значением 'neat' и строковый ключ 'foo' со строковым значением 'bar'.

Аргумент position указывает начало тега, комментария или текста. Подобно массивам, первый символ в потоке имеет позицию 0. Для тегов, которые подразумеваются, позиция укажет расположение следующего встреченного тега. В первом примере, подразумеваемые начальные теги body и html будут иметь ту же позицию, что и тег p, а подразумеваемые закрывающие теги p, html и body будут иметь одну и ту же позицию.

Поскольку HTML пропускает пробелы, позиция для текста будет позицией первого допустимого символа, например, в строке '\n\n\nblah' текст 'blah' будет иметь позицию 3, новые строки пропущены.

Для атрибутов, у которых нет значения, например, в строке HTML <foo blah>, у атрибута blah нет значения, существуют два возможных значения, которые будут размещены в значении AttributeSet:

  • Если DTD не содержит определения для элемента или определение не имеет явного значения, то значение в AttributeSet будет HTML.NULL_ATTRIBUTE_VALUE.
  • Если DTD содержит явное значение, как в: <!ATTLIST OPTION selected (selected) #IMPLIED>, это значение из dtd (в данном случае selected) будет использовано.

После того, как поток был проанализирован, обратный вызов уведомляется о наиболее вероятной строке окончания строки. Строка окончания строки будет одной из \n, \r или \r\n, любой из которых встречается чаще всего при разборе потока.

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

Поля, объявленные в классе javax.swing.text.html.parser.Parser

dtd, strict

Поля, объявленные в интерфейсе 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

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

Конструктор Описание
DocumentParser(DTD dtd)
Создаёт парсер документа с указанным dtd.

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

Модификатор и тип Метод Описание
protected void handleEmptyTag(TagElement tag)
Обработка пустого тега.
protected void handleEndTag(TagElement tag)
Обработка закрывающего тега.
protected void handleStartTag(TagElement tag)
Обработка открывающего тега.
protected void handleText(char[] data)
Обработка текста.
void parse(Reader in, HTMLEditorKit.ParserCallback callback, boolean ignoreCharSet)
Парсинг потока HTML с заданным DTD.

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

endTag, error, error, error, error, flushAttributes, getAttributes, getCurrentLine, getCurrentPos, handleComment, handleEOFInComment, handleError, handleTitle, makeTag, makeTag, markFirstTime, parse, parseDTDMarkup, parseMarkupDeclarations, startTag

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

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

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

DocumentParser

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

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

parse

public void parse(Reader in, HTMLEditorKit.ParserCallback callback, boolean ignoreCharSet) throws IOException
Парсинг потока HTML с заданным DTD.
Параметры:
in - the reader to read the source from
callback - the callback
ignoreCharSet - if true the charset is ignored
Исключения:
IOException - if an I/O error occurs

handleStartTag

protected void handleStartTag(TagElement tag)
Обработка открывающего тега.
Переопределяет:
handleStartTag в классе Parser
Параметры:
tag - the tag being handled

handleEmptyTag

protected void handleEmptyTag(TagElement tag) throws ChangedCharSetException
Обработка пустого тега.
Переопределяет:
handleEmptyTag в классе Parser
Параметры:
tag - the tag being handled
Исключения:
ChangedCharSetException - if the document charset was changed

handleEndTag

protected void handleEndTag(TagElement tag)
Обработка закрывающего тега.
Переопределяет:
handleEndTag в классе Parser
Параметры:
tag - the tag being handled

handleText

protected void handleText(char[] data)
Обработка текста.
Переопределяет:
handleText в классе Parser
Параметры:
data - the section text

© 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/parser/DocumentParser.html

Spec-Zone.ru

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