Интерфейс LSParserFilter
public interface LSParserFilter
LSParserFilter предоставляют приложениям возможность проверять узлы в процессе их создания при синтаксическом разборе. При проверке каждого узла его можно изменить или удалить, а также досрочно завершить весь разбор. На момент вызова парсером любого из методов фильтра объекты владельца Document и DOMImplementation существуют и доступны. Элемент документа никогда не передается методам LSParserFilter, то есть отфильтровать элемент документа невозможно. Узлы Document, DocumentType, Notation, Entity и Attr никогда не передаются методу acceptNode фильтра. Дочерние узлы узла EntityReference передаются фильтру, если параметр "entities" установлен в false. Обратите внимание, что, как описано для параметра "entities", нераскрытые узлы ссылок на сущности никогда не отбрасываются и всегда передаются фильтру.
При синтаксическом разборе документа все проверки допустимости выполняются над исходным документом в том виде, в котором он представлен во входном потоке, а не над DOM-документом, создаваемым в памяти. При использовании фильтров документ в памяти может быть подмножеством документа в потоке, а его допустимость может быть нарушена фильтрацией.
При передаче элементов методам фильтра все атрибуты по умолчанию должны присутствовать в элементах. Все остальное содержимое по умолчанию также должно передаваться методам фильтра.
Приложения DOM не должны генерировать исключения в фильтре. Поведение при генерации исключений из фильтра зависит от реализации DOM.
См. также спецификацию Document Object Model (DOM) Level 3 Load and Save.
- Начиная с:
- 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 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://docs.oracle.com/en/java/javase/25/docs/api/java.xml/org/w3c/dom/ls/LSParserFilter.html