Интерфейс LSParserFilter
public interface LSParserFilter
LSParserFilter предоставляют приложениям возможность проверять узлы по мере их построения во время парсинга. При проверке каждого узла он может быть изменён или удалён, или весь парсинг может быть прерван досрочно. В момент вызова методов фильтра анализатором, объекты Document и DOMImplementation, владеющие узлом, существуют и доступны. Элемент документа никогда не передаётся в методы LSParserFilter, т.е. отфильтровать элемент документа невозможно. Document, DocumentType, Notation, Entity, и Attr узлы никогда не передаются методу acceptNode фильтра. Подразузёмые узлы EntityReference передаются фильтру, если параметр "entities" установлен в значение false. Обратите внимание, что, как описано в параметре "entities", узлы нерасширенных ссылок на сущности никогда не отбрасываются и всегда передаются фильтру.
Все проверки валидности при парсинге документа выполняются на исходном документе, как он отображается в потоке ввода, а не на документе DOM, как он строится в памяти. С помощью фильтров документ в памяти может быть подмножеством документа в потоке, а его валидность может быть нарушена фильтрованием.
Все атрибуты по умолчанию должны быть присутствовать на элементах, когда элементы передаются методам фильтра. Всё остальное содержимое по умолчанию должно передаваться методам фильтра.
Приложения DOM не должны генерировать исключения в фильтре. Действие выбрасывания исключений из фильтра зависит от реализации DOM.
См. также Спецификацию DOM Level 3 Load and Save.
- Since:
- 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 стартового тега, но перед обработкой остальной части startElement. Цель состоит в том, чтобы эффективно пропустить элемент, включая его потомков. Обратите внимание, что только узлы элементов передаются функции 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 Level 2 Traversal and Range].
© 1993, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.xml/org/w3c/dom/ls/LSParserFilter.html