Spec-Zone.ru › OpenJDK 21

Интерфейс LSParserFilter

public interface LSParserFilter
LSParserFilter предоставляют приложениям возможность проверять узлы во время их построения во время разбора. При проверке каждого узла его можно изменить или удалить, или весь разбор можно завершить преждевременно.

В момент вызова методов фильтра анализатором, объекты Document и DOMImplementation владельца существуют и доступны. Элемент документа никогда не передаётся методам LSParserFilter, т. е. отфильтровать элемент документа невозможно. Document, DocumentType, Notation, Entity, и Attr узлы никогда не передаются методу acceptNode фильтра. Дочерние узлы узла EntityReference передаются фильтру, если параметр «сущности» установлен в false. Обратите внимание, что, как описано в параметре «сущности», нераспакованные ссылки на сущности никогда не удаляются и всегда передаются фильтру.

Вся проверка валидности во время разбора документа выполняется на исходном документе, как он появляется в потоке ввода, а не на документе DOM, поскольку он строится в памяти. При использовании фильтров документ в памяти может быть подмножеством документа в потоке, и его валидность может быть затронута фильтрацией.

Все атрибуты по умолчанию должны присутствовать в элементах, когда элементы передаются методам фильтра. Всё остальное содержимое по умолчанию должно передаваться методам фильтра.

Приложения DOM не должны генерировать исключения в фильтре. Действие выбрасывания исключений из фильтра зависит от реализации DOM.

См. также Спецификацию уровня 3 DOM (Document Object Model) загрузки и сохранения.

С тех пор:
1.5

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

Модификатор и тип Поле Описание
static final short FILTER_ACCEPT
Принять узел.
static final short FILTER_INTERRUPT
Прервать обычную обработку документа.
static final short FILTER_REJECT
Отклонить узел и его потомков.
static final short FILTER_SKIP
Пропустить этот единственный узел.

Краткое описание методов

Модификатор и тип Метод Описание
short acceptNode(Node nodeArg)
Этот метод будет вызван анализатором по завершении разбора каждого узла.
int getWhatToShow()
Сообщает LSParser, какие типы узлов отображать методу LSParserFilter.acceptNode.
short startElement(Element elementArg)
Анализатор вызовет этот метод после сканирования каждого начального тега Element, но до обработки оставшейся части Element.

Подробное описание полей

FILTER_ACCEPT

static final short FILTER_ACCEPT
Принять узел.
См. также:
  • Значения постоянных полей

FILTER_REJECT

static final short FILTER_REJECT
Отклонить узел и его потомков.
См. также:
  • Значения постоянных полей

FILTER_SKIP

static final short FILTER_SKIP
Пропустить этот единственный узел. Потомки этого узла всё равно будут учтены.
См. также:
  • Значения постоянных полей

FILTER_INTERRUPT

static final short FILTER_INTERRUPT
Прервать обычную обработку документа.
См. также:
  • Значения постоянных полей

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

startElement

short startElement(Element elementArg)
Анализатор вызовет этот метод после сканирования каждого начального тега Element, но до обработки оставшейся части Element. Цель состоит в том, чтобы позволить элементу, включая его потомков, эффективно пропустить. Обратите внимание, что только узлы элемента передаются функции startElement.
Узел элемента, переданный в startElement для фильтрации, будет включать все атрибуты элемента, но не дочерние узлы. Элемент может еще не быть на месте в строящемся документе (он может не иметь родительского узла.)
Функция фильтра startElement может получить доступ к атрибутам элемента или изменить их. Изменение объявлений имен пространства имён не повлияет на разрешение имен пространства имён анализатором.
Для повышения эффективности узел элемента, переданный фильтру, может не быть тем же, что и фактически размещён в дереве, если узел принят. И фактический узел (тождество объекта узла) может быть повторно использован во время процесса чтения и фильтрации документа.
Параметры:
elementArg - Новый встреченный элемент. На момент вызова этого метода элемент не завершён - он будет иметь свои атрибуты, но не потомков.
Возвращает:
  • FILTER_ACCEPT если Element должен быть включён в строящийся документ DOM.
  • FILTER_REJECT если Element и все его потомки должны быть отклонены.
  • FILTER_SKIP если Element должен быть пропущен. Все его потомки вставляются вместо пропущенного узла Element.
  • FILTER_INTERRUPT если фильтр хочет остановить обработку документа. Прерывание обработки документа больше не гарантирует, что результирующее дерево DOM является правильно сформированным XML. Element отклоняется.
Возврат любых других значений приведёт к неопределённому поведению.

acceptNode

short acceptNode(Node nodeArg)
Этот метод будет вызван анализатором по завершении разбора каждого узла. Узел и все его потомки будут существовать и быть полными. Родительский узел также будет существовать, хотя он может быть неполным, т. е. у него могут быть дополнительные потомки, которые ещё не были проанализированы. Узлы атрибутов никогда не передаются этой функции.
Внутри этого метода новый узел может быть свободно изменён - могут быть добавлены или удалены потомки, изменены текстовые узлы и т. д. Состояние остальной части документа вне этого узла не определено, и воздействие любой попытки перейти к нему или изменить любую другую часть документа не определено.
Для проверки парсеров проверки производятся на исходном документе, до любой модификации фильтром. Никакие проверки валидности не производятся на модификациях документа, выполненных фильтром.
Если этот новый узел отклоняется, анализатор может повторно использовать новый узел и любые его потомки.
Параметры:
nodeArg - Новый построенный элемент. На момент вызова этого метода элемент завершён - он имеет все свои потомки (и их потомки, рекурсивно) и атрибуты, и присоединён как потомок к своему родителю.
Возвращает:
  • FILTER_ACCEPT если этот Node должен быть включён в строящийся документ DOM.
  • FILTER_REJECT если Node и все его потомки должны быть отклонены.
  • FILTER_SKIP если Node должен быть пропущен, и Node должен быть заменён всеми потомками Node.
  • FILTER_INTERRUPT если фильтр хочет остановить обработку документа. Прерывание обработки документа больше не гарантирует, что результирующее дерево DOM является правильно сформированным XML. Node принимается и будет последним полностью проанализированным узлом.

getWhatToShow

int getWhatToShow()
Сообщает LSParser какие типы узлов отображать методу LSParserFilter.acceptNode. Если узел не отображается фильтру с помощью этого атрибута, он автоматически включается в строящийся документ DOM. См. NodeFilter для определения констант. Константы SHOW_ATTRIBUTE , SHOW_DOCUMENT, SHOW_DOCUMENT_TYPE, SHOW_NOTATION, SHOW_ENTITY, и SHOW_DOCUMENT_FRAGMENT здесь бессмысленны. Эти узлы никогда не будут переданы LSParserFilter.acceptNode.
Используемые здесь константы определены в [DOM уровень 2 обхода и диапазона].

© 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.xml/org/w3c/dom/ls/LSParserFilter.html

Spec-Zone.ru

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