Spec-Zone.ru › OpenJDK 8

Класс 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. Обработчик увидит следующие методы:

  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)

Методы

Модификатор и тип Метод и описание
protected void handleComment(char[] text)

Вызывается при обнаружении HTML-комментария.

protected void handleEmptyTag(TagElement tag)

Обработка пустого тега.

protected void handleEndTag(TagElement tag)

Обработка закрывающего тега.

protected void handleError(int ln, String errorMsg)

Произошла ошибка.

protected void handleStartTag(TagElement tag)

Обработка открывающего тега.

protected void handleText(char[] data)

Обработка текста.

void parse(Reader in, HTMLEditorKit.ParserCallback callback, boolean ignoreCharSet)

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

endTag, error, error, error, error, flushAttributes, getAttributes, getCurrentLine, getCurrentPos, handleEOFInComment, 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)

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

parse

public void parse(Reader in,
                  HTMLEditorKit.ParserCallback callback,
                  boolean ignoreCharSet)
           throws IOException
Исключение:
IOException

handleStartTag

protected void handleStartTag(TagElement tag)

Обработка открывающего тега.

Переопределяет:
handleStartTag в классе Parser

handleComment

protected void handleComment(char[] text)

Описание скопировано из класса: Parser

Вызывается при обнаружении HTML-комментария.

Переопределяет:
handleComment в классе Parser

handleEmptyTag

protected void handleEmptyTag(TagElement tag)
                       throws ChangedCharSetException

Обработка пустого тега.

Переопределяет:
handleEmptyTag в классе Parser
Исключение:
ChangedCharSetException

handleEndTag

protected void handleEndTag(TagElement tag)

Обработка закрывающего тега.

Переопределяет:
handleEndTag в классе Parser

handleText

protected void handleText(char[] data)

Обработка текста.

Переопределяет:
handleText в классе Parser

handleError

protected void handleError(int ln,
                           String errorMsg)

Описание скопировано из класса: Parser

Произошла ошибка.

Переопределяет:
handleError в классе Parser

© 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.

Spec-Zone.ru

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