Класс 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). Считывает поток InputStream HTML и вызывает соответствующие методы в классе ParserCallback. Это по умолчанию используемый парсер HTMLEditorKit для разбора HTML-ссылок.
Этот парсер будет сообщать обратной функции обо всех допустимых тегах, а также о тегах, которые подразумеваются, но не указаны явно. Например, строка html (<p>blah) содержит только тег p. Обратная функция увидит следующие методы:
- handleStartTag(html, ...)
- handleStartTag(head, ...)
- handleEndTag(head)
- handleStartTag(body, ...)
- handleStartTag(p, ...)
- handleText(...)
- handleEndTag(p)
- handleEndTag(body)
- handleEndTag(html)
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. Для тегов, которые подразумеваются, position укажет расположение следующего встреченного тега. В первом примере, подразумеваемые начальные теги 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) |
Создаёт парсер документа с указанным |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
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- 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- текст раздела
© 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/text/html/parser/DocumentParser.html