Spec-Zone.ru › OpenJDK 25

Класс DocumentParser

java.lang.Object
javax.swing.text.html.parser.Parser
javax.swing.text.html.parser.DocumentParser
Все реализованные интерфейсы:
DTDConstants
public class DocumentParser extends Parser
Парсер HTML-документов (фактически можно указать DTD, но этот класс следует использовать только с DTD html в swing). Читает HTML из InputStream и вызывает соответствующие методы класса ParserCallback. Это парсер по умолчанию, используемый HTMLEditorKit для разбора URL-адресов 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, иначе будет использоваться String. Например, <p foo=bar class=neat> содержит два атрибута. foo не определён в HTML.Attribute, тогда как class определён, поэтому AttributeSet будет содержать два значения: HTML.Attribute.CLASS со значением String 'neat' и ключ String 'foo' со значением String '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 — та, которая чаще всего встречалась при разборе потока.

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

Поля, объявленные в классе Parser

dtd, strict

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

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

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

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

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

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

DocumentParser

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

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

parse

public void parse(Reader in, HTMLEditorKit.ParserCallback callback, boolean ignoreCharSet) throws IOException
Разбирает поток HTML с учётом DTD.
Параметры:
in — считыватель, из которого читается исходный текст
callback — обратный вызов
ignoreCharSet — если true, кодировка игнорируется
Выбрасывает:
IOException — если произошла ошибка ввода-вывода

handleStartTag

protected void handleStartTag(TagElement tag)
Обрабатывает начальный тег.
Переопределяет:
handleStartTag в классе Parser
Параметры:
tag — обрабатываемый тег

handleEmptyTag

protected void handleEmptyTag(TagElement tag) throws ChangedCharSetException
Обрабатывает пустой тег.
Переопределяет:
handleEmptyTag в классе Parser
Параметры:
tag — обрабатываемый тег
Выбрасывает:
ChangedCharSetException — если кодировка документа была изменена

handleEndTag

protected void handleEndTag(TagElement tag)
Обрабатывает конечный тег.
Переопределяет:
handleEndTag в классе Parser
Параметры:
tag — обрабатываемый тег

handleText

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по 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/parser/DocumentParser.html

Spec-Zone.ru

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