Интерфейс 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 |
Этот метод будет вызван анализатором по завершении разбора каждого узла. |
int |
getWhatToShow() |
Сообщает LSParser, какие типы узлов отображать методу LSParserFilter.acceptNode. |
short |
startElement |
Анализатор вызовет этот метод после сканирования каждого начального тега 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