Интерфейс LSParserFilter
public interface LSParserFilter
LSParserFilter предоставляют приложениям возможность просматривать узлы по мере их построения во время разбора. При просмотре каждого узла его можно изменить или удалить, или весь разбор можно прервать. В момент вызова любого из методов фильтра анализатором, объекты Document и DOMImplementation владельца существуют и доступны. Элемент документа никогда не передается методам LSParserFilter, т. е. отфильтровать элемент документа невозможно. Document, DocumentType, Notation, Entity, и Attr узлы никогда не передаются методу acceptNode фильтра. Дочерние узлы узла EntityReference передаются фильтру, если параметр "entities" установлен в false. Обратите внимание, что, как описано в параметре "entities", нерасширенные узлы ссылок на сущности никогда не отбрасываются и всегда передаются фильтру.
Все проверки валидности во время разбора документа выполняются на исходном документе, как он появляется в потоке ввода, а не на документе DOM по мере его построения в памяти. С фильтрами документ в памяти может быть подмножеством документа в потоке, а его валидность может быть затронута фильтрованием.
Все атрибуты по умолчанию должны присутствовать в элементах, когда элементы передаются методам фильтра. Все другое содержимое по умолчанию должно передаваться методам фильтра.
Приложения DOM не должны генерировать исключения в фильтре. Эффект выброса исключений из фильтра зависит от реализации DOM.
См. также Спецификацию объекта документа DOM (DOM) уровня 3 "Загрузка и сохранение".
- 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 анализатор вызовет этот метод, но перед обработкой остальной части Element. Цель заключается в том, чтобы эффективно пропустить элемент, включая все его дочерние элементы. Обратите внимание, что только узлы элементов передаются в функцию startElement. Узел элемента, переданный в функцию
startElement для фильтрации, будет содержать все атрибуты элемента, но не дочерние узлы. Элемент может еще не находиться на месте в конструируемом документе (он может не иметь родительского узла). Функция фильтра
startElement может получить доступ к атрибутам элемента или изменить их. Изменение деклараций пространства имен не повлияет на разрешение пространств имен анализатором. Для повышения эффективности узел элемента, переданный фильтру, может не быть тем же, что и фактически помещенный в дерево, если узел принят. И фактический узел (идентичность объекта узла) может быть повторно использован во время процесса чтения и фильтрации документа.
- Parameters:
-
elementArg- Новое встреченное значение. В момент вызова этого метода элемент неполный — у него будут атрибуты, но не дочерние элементы. - Returns:
-
-
FILTER_ACCEPTеслиElementдолжен быть включен в документ DOM, который строится. -
FILTER_REJECTеслиElementи все его дочерние элементы должны быть отклонены. -
FILTER_SKIPеслиElementдолжен быть пропущен. Все его дочерние элементы вставляются вместо пропущенного узлаElement. -
FILTER_INTERRUPTесли фильтр хочет остановить обработку документа. Прерывание обработки документа больше не гарантирует, что результирующее дерево DOM является хорошо сформированным XML.Elementотклоняется.
-
acceptNode
short acceptNode(Node nodeArg)
Изнутри этого метода новый узел может быть изменен — можно добавить или удалить дочерние элементы, изменить узлы текста и т. д. Состояние остальной части документа вне этого узла не определено, и воздействие любой попытки перейти к нему или изменить любую другую часть документа не определено.
Для проверки анализаторов проверки выполняются на исходном документе до любого изменения фильтром. Никакие проверки валидности не выполняются на изменениях документа, внесенных фильтром.
Если этот новый узел отклоняется, анализатор может повторно использовать новый узел и все его потомки.
- Parameters:
-
nodeArg- Новый созданный элемент. В момент вызова этого метода элемент является полным — у него есть все дочерние элементы (и их дочерние элементы рекурсивно) и атрибуты, и он прикреплен как дочерний элемент к своему родителю. - Returns:
-
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, 2021, 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/17/docs/api/java.xml/org/w3c/dom/ls/LSParserFilter.html