Интерфейс LSParserFilter
public interface LSParserFilter
LSParserFilter предоставляют приложениям возможность исследовать узлы по мере их построения во время разбора. При исследовании каждого узла он может быть изменён или удалён, или весь разбор может быть прерван досрочно.
В момент вызова любых методов фильтра анализатором, объекты Document и DOMImplementation владельца существуют и доступны. Элемент документа никогда не передаётся в методы LSParserFilter, т.е. отфильтровать элемент документа невозможно. Document, DocumentType, Notation, Entity, и Attr узлы никогда не передаются методу acceptNode фильтра. Дочерние узлы узла EntityReference передаются фильтру, если параметр «сущности» установлен в значение false. Обратите внимание, что, как описано в параметре «сущности», нераспакованные узлы ссылок на сущности никогда не отбрасываются и всегда передаются фильтру.
Вся проверка корректности при разборе документа выполняется на исходном документе, как он появляется в потоке ввода, а не на документе DOM, как он строится в памяти. С фильтрами документ в памяти может быть подмножеством документа в потоке, и его корректность может быть нарушена фильтром.
Все атрибуты по умолчанию должны присутствовать в элементах, когда элементы передаются методам фильтра. Весь остальной контент по умолчанию должен быть передан методам фильтра.
Приложения DOM не должны генерировать исключения в фильтре. Воздействие исключений из фильтра зависит от реализации DOM.
См. также Спецификацию объекта документа модели DOM (DOM) уровня 3 Загрузки и сохранения.
- С момента:
- 1.5
Поля
| Модификатор и тип | Поле | Описание |
|---|---|---|
static short |
FILTER_ACCEPT |
Принять узел. |
static short |
FILTER_INTERRUPT |
Прервать нормальную обработку документа. |
static short |
FILTER_REJECT |
Отклонить узел и его потомков. |
static short |
FILTER_SKIP |
Пропустить этот единственный узел. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
short |
acceptNode(Node nodeArg) |
Этот метод будет вызываться анализатором по завершении разбора каждого узла. |
int |
getWhatToShow() |
Указывает |
short |
startElement(Element elementArg) |
Анализатор вызовет этот метод после сканирования каждого начального тега |
Поля
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 Level 2 Traversal and Range].
© 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.xml/org/w3c/dom/ls/LSParserFilter.html