Класс Parser
- java.lang.Object
-
- javax.swing.text.html.parser.Parser
- Все реализуемые интерфейсы:
- DTDConstants
- Прямые известные подклассы:
- DocumentParser
public class Parser extends Object implements DTDConstants
Простой HTML-парсер, управляемый DTD. Парсер считывает HTML-файл из потока ввода и вызывает различные методы (которые должны быть переопределены в подклассе) при обнаружении тегов и данных.
К сожалению, существует много плохо реализованных 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>Использование</em></a></p>', который, по-видимому, обрабатывается как: '<p><a href="xx"><em>Использование</em></a></p>'
Если strict ложно, при обнаружении тега, нарушающего поток (TagElement.breaksFlows) или заключительных пробелов, все пробелы игнорируются до тех пор, пока не будет обнаружен не пробельный символ. Это, по-видимому, обеспечивает поведение, более близкое к поведению популярных браузеров.
- См. также:
-
DTD,TagElement,SimpleAttributeSet
Поля
| Модификатор и тип | Поле и описание |
|---|---|
protected 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 dtd) |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
protected void |
endTag(boolean omitted) Обработка закрывающего тега. |
protected void |
error(String err) |
protected void |
error(String err,
String arg1) |
protected void |
error(String err,
String arg1,
String arg2) |
protected void |
error(String err,
String arg1,
String arg2,
String arg3) Вызов обработчика ошибок. |
protected void |
flushAttributes() |
protected SimpleAttributeSet |
getAttributes() |
protected int |
getCurrentLine() |
protected int |
getCurrentPos() |
protected void |
handleComment(char[] text) Вызывается при обнаружении HTML-комментария. |
protected void |
handleEmptyTag(TagElement tag) Вызывается при обнаружении пустого тега. |
protected void |
handleEndTag(TagElement tag) Вызывается при обнаружении закрывающего тега. |
protected void |
handleEOFInComment() |
protected void |
handleError(int ln,
String msg) Возникла ошибка. |
protected void |
handleStartTag(TagElement tag) Вызывается при обнаружении открывающего тега. |
protected void |
handleText(char[] text) Вызывается при обнаружении PCDATA. |
protected void |
handleTitle(char[] text) Вызывается при обнаружении тега HTML-заголовка. |
protected TagElement |
makeTag(Element elem) |
protected TagElement |
makeTag(Element elem,
boolean fictional) Создает TagElement. |
protected void |
markFirstTime(Element elem) Помечает первый раз, когда тег был обнаружен в документе |
void |
parse(Reader in) Разбор HTML-потока, используя DTD. |
String |
parseDTDMarkup() Разбирает объявление типа документа (Document Declaration Type). |
protected boolean |
parseMarkupDeclarations(StringBuffer strBuff) Разбор объявлений разметки. |
protected void |
startTag(TagElement tag) Обработка открывающего тега. |
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Подробное описание полей
dtd
protected DTD dtd
strict
protected boolean strict
Этот флаг определяет, будет ли парсер строго следовать совместимости SGML. Если false, он будет снисходителен к определенным распространённым случаям ошибочных HTML-конструкций. Строго или нет, в любом случае будет зарегистрирована ошибка.
Подробное описание конструкторов
Parser
public Parser(DTD dtd)
Подробное описание методов
getCurrentLine
protected int getCurrentLine()
- Возвращает:
- номер строки, которая в данный момент разбирается
makeTag
protected TagElement makeTag(Element elem,
boolean fictional) Создаёт TagElement.
makeTag
protected TagElement makeTag(Element elem)
getAttributes
protected SimpleAttributeSet getAttributes()
flushAttributes
protected void flushAttributes()
handleText
protected void handleText(char[] text)
Вызывается при обнаружении PCDATA.
handleTitle
protected void handleTitle(char[] text)
Вызывается при обнаружении тега HTML-заголовка.
handleComment
protected void handleComment(char[] text)
Вызывается при обнаружении HTML-комментария.
handleEOFInComment
protected void handleEOFInComment()
handleEmptyTag
protected void handleEmptyTag(TagElement tag)
throws ChangedCharSetException Вызывается при обнаружении пустого тега.
- Исключение:
ChangedCharSetException
handleStartTag
protected void handleStartTag(TagElement tag)
Вызывается при обнаружении открывающего тега.
handleEndTag
protected void handleEndTag(TagElement tag)
Вызывается при обнаружении закрывающего тега.
handleError
protected void handleError(int ln,
String msg) Возникла ошибка.
error
protected void error(String err,
String arg1,
String arg2,
String arg3) Вызов обработчика ошибок.
error
protected void error(String err,
String arg1,
String arg2) error
protected void error(String err,
String arg1) error
protected void error(String err)
startTag
protected void startTag(TagElement tag)
throws ChangedCharSetException Обработка открывающего тега. Новый тег добавляется в стек тегов. Проверяется список атрибутов на наличие обязательных атрибутов.
- Исключение:
ChangedCharSetException
endTag
protected void endTag(boolean omitted)
Обработка закрывающего тега. Закрыващий тег извлекается из стека тегов.
markFirstTime
protected void markFirstTime(Element elem)
Помечает первый раз, когда тег был обнаружен в документе
parseDTDMarkup
public String parseDTDMarkup()
throws IOException Разбирает объявление типа документа (Document Declaration Type). В данный момент игнорируется.
- Исключение:
IOException
parseMarkupDeclarations
protected boolean parseMarkupDeclarations(StringBuffer strBuff)
throws IOException Разбор объявлений разметки. В данный момент обрабатывается только объявление типа документа. Возвращает true, если это объявление разметки, иначе false.
- Исключение:
IOException
parse
public void parse(Reader in)
throws IOException Разбор HTML-потока, используя DTD.
- Исключение:
IOException
getCurrentPos
protected int getCurrentPos()
© 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.