Класс Parser
- Все реализованные интерфейсы:
DTDConstants
- Прямые известные подклассы:
DocumentParser
public class Parser extends Object implements DTDConstants
К сожалению, существует много плохо реализованных HTML-парсеров, и в результате есть много плохо отформатированных HTML-файлов. Этот парсер пытается разобрать большинство HTML-файлов. Это означает, что реализация иногда отклоняется от спецификации SGML в пользу HTML.
Парсер обрабатывает \r и \r\n как \n. Пробелы после открывающих тегов и перед закрывающими тегами игнорируются так же, как указано в спецификации SGML/HTML.
Спецификация HTML не очень хорошо определяет, как нужно обрабатывать пробелы. В частности, не обсуждаются следующие сценарии (обратите внимание, что здесь должен использоваться пробел, но я использую   для принудительного отображения пробела):
'<b>blah <i> <strike> foo', который может быть обработан как: '<b>blah <i><strike>foo'
а также: '<p><a href="xx"> <em>Using</em></a></p>' который, похоже, обрабатывается как: '<p><a href="xx"><em>Using</em></a></p>'
Если strict имеет значение false, при обнаружении тега, нарушающего структуру потока (TagElement.breaksFlows) или конечного пробела, все пробелы будут игнорироваться до тех пор, пока не будет обнаружен не-пробельный символ. Это, похоже, обеспечивает поведение, более близкое к поведению популярных браузеров.
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected DTD |
dtd |
DTD. |
protected boolean |
strict |
Этот флаг определяет, будет ли парсер строго следовать спецификации SGML. |
Поля, объявленные в интерфейсе 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
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
Parser |
Создаёт парсер с указанным dtd. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
protected void |
endTag |
Обработка закрывающего тега. |
protected void |
error |
Вызывает обработчик ошибок с 1-м, 2-м и 3-м аргументами сообщения об ошибке "?". |
protected void |
error |
Вызывает обработчик ошибок со 2-м и 3-м аргументами сообщения об ошибке "?". |
protected void |
error |
Вызывает обработчик ошибок с 3-м аргументом сообщения об ошибке "?". |
protected void |
error |
Вызывает обработчик ошибок. |
protected void |
flushAttributes() |
Удаляет текущие атрибуты. |
protected SimpleAttributeSet |
getAttributes() |
Возвращает атрибуты для текущего тега. |
protected int |
getCurrentLine() |
Возвращает номер строки, которая в данный момент анализируется. |
protected int |
getCurrentPos() |
Возвращает текущую позицию. |
protected void |
handleComment |
Вызывается при обнаружении HTML-комментария. |
protected void |
handleEmptyTag |
Вызывается при обнаружении пустого тега. |
protected void |
handleEndTag |
Вызывается при обнаружении закрывающего тега. |
protected void |
handleEOFInComment() |
Вызывается при завершении содержимого без закрытия HTML-комментария. |
protected void |
handleError |
Возникла ошибка. |
protected void |
handleStartTag |
Вызывается при обнаружении открывающего тега. |
protected void |
handleText |
Вызывается при обнаружении PCDATA. |
protected void |
handleTitle |
Вызывается при обнаружении HTML-тега заголовка. |
protected TagElement |
makeTag |
Создаёт TagElement. |
protected TagElement |
makeTag |
Создаёт TagElement. |
protected void |
markFirstTime |
Помечает первый случай обнаружения тега в документе |
void |
parse |
Анализирует HTML-поток, используя DTD. |
String |
parseDTDMarkup() |
Анализирует декларацию Document Type Declaration. |
protected boolean |
parseMarkupDeclarations |
Анализ деклараций разметки. |
protected void |
startTag |
Обработка открывающего тега. |
Подробное описание полей
dtd
protected DTD dtd
strict
protected boolean strict
Подробное описание конструкторов
Parser
public Parser(DTD dtd)
dtd. - Параметры:
-
dtd- DTD.
Подробное описание методов
getCurrentLine
protected int getCurrentLine()
- Возвращает:
- номер строки, которая в данный момент анализируется
makeTag
protected TagElement makeTag(Element elem, boolean fictional)
- Параметры:
-
elem- элемент, хранящий определение тега -
fictional- значение флага "fictional", которое нужно установить для тега - Возвращает:
- созданный
TagElement
makeTag
protected TagElement makeTag(Element elem)
- Параметры:
-
elem- элемент, хранящий определение тега - Возвращает:
- созданный
TagElement
getAttributes
protected SimpleAttributeSet getAttributes()
- Возвращает:
-
SimpleAttributeSet, содержащий атрибуты
flushAttributes
protected void flushAttributes()
handleText
protected void handleText(char[] text)
- Параметры:
-
text- текст раздела
handleTitle
protected void handleTitle(char[] text)
- Параметры:
-
text- текст заголовка
handleComment
protected void handleComment(char[] text)
- Параметры:
-
text- обрабатываемый комментарий
handleEOFInComment
protected void handleEOFInComment()
handleEmptyTag
protected void handleEmptyTag(TagElement tag) throws ChangedCharSetException
- Параметры:
-
tag- обрабатываемый тег - Исключения:
-
ChangedCharSetException- если кодировка документа была изменена
handleStartTag
protected void handleStartTag(TagElement tag)
- Параметры:
-
tag- обрабатываемый тег
handleEndTag
protected void handleEndTag(TagElement tag)
- Параметры:
-
tag- обрабатываемый тег
handleError
protected void handleError(int ln, String msg)
- Параметры:
-
ln- номер строки, содержащей ошибку -
msg- сообщение об ошибке
error
protected void error(String err, String arg1, String arg2, String arg3)
- Параметры:
-
err- тип ошибки -
arg1- первый аргумент сообщения об ошибке -
arg2- второй аргумент сообщения об ошибке -
arg3- третий аргумент сообщения об ошибке
error
protected void error(String err, String arg1, String arg2)
- Параметры:
-
err- тип ошибки -
arg1- первый аргумент сообщения об ошибке -
arg2- второй аргумент сообщения об ошибке
error
protected void error(String err, String arg1)
- Параметры:
-
err- тип ошибки -
arg1- первый аргумент сообщения об ошибке
error
protected void error(String err)
- Параметры:
-
err- тип ошибки
startTag
protected void startTag(TagElement tag) throws ChangedCharSetException
- Параметры:
-
tag- тег - Исключения:
-
ChangedCharSetException- если кодировка документа была изменена
endTag
protected void endTag(boolean omitted)
- Параметры:
-
omitted-trueесли тега фактически нет в документе, но предполагается парсером
markFirstTime
protected void markFirstTime(Element elem)
- Параметры:
-
elem- элемент, представленный тегом
parseDTDMarkup
public String parseDTDMarkup() throws IOException
- Возвращает:
- строковое представление декларации объявления
- Исключения:
-
IOException- если произошла ошибка ввода/вывода
parseMarkupDeclarations
protected boolean parseMarkupDeclarations(StringBuffer strBuff) throws IOException
- Параметры:
-
strBuff- декларация разметки - Возвращает:
-
trueесли это допустимая декларация разметки; в противном случаеfalse - Исключения:
-
IOException- если произошла ошибка ввода/вывода
parse
public void parse(Reader in) throws IOException
- Параметры:
-
in- поток для чтения исходного кода - Исключения:
-
IOException- если произошла ошибка ввода/вывода
getCurrentPos
protected int getCurrentPos()
- Возвращает:
- текущую позицию
© 1993, 2023, 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/21/docs/api/java.desktop/javax/swing/text/html/parser/Parser.html