Spec-Zone.ru › OpenJDK 25

Интерфейс EntityResolver

Все известные подинтерфейсы:
CatalogResolver, EntityResolver2
Все известные классы, реализующие интерфейс:
DefaultHandler, DefaultHandler2, HandlerBase, XMLFilterImpl
public interface EntityResolver
Базовый интерфейс для разрешения сущностей.

Если приложению SAX необходимо реализовать индивидуальную обработку внешних сущностей, оно должно реализовать этот интерфейс и зарегистрировать его экземпляр в драйвере SAX с помощью метода setEntityResolver.

После этого XML-считыватель позволит приложению перехватывать любые внешние сущности (включая внешнее подмножество DTD и внешние параметрические сущности, если они есть) до их включения.

Многим приложениям SAX не потребуется реализовывать этот интерфейс, однако он будет особенно полезен приложениям, которые создают документы XML на основе баз данных или других специализированных источников данных, а также приложениям, использующим типы URI, отличные от URL.

Следующий обработчик предоставит приложению специальный символьный поток для сущности с системным идентификатором "http://www.myhost.com/today":

import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;

public class MyResolver implements EntityResolver {
  public InputSource resolveEntity (String publicId, String systemId)
  {
    if (systemId.equals("http://www.myhost.com/today")) {
             // return a special input source
      MyReader reader = new MyReader();
      return new InputSource(reader);
    } else {
             // use the default behaviour
      return null;
    }
  }
}

Приложение также может использовать этот интерфейс для перенаправления системных идентификаторов на локальные URI или для поиска замен в каталоге (возможно, с использованием публичного идентификатора).

Начиная с:
1.4, SAX 1.0
См. также:
  • XMLReader.setEntityResolver(EntityResolver)
  • InputSource

Краткое описание методов

Модификатор и тип Метод Описание
InputSource resolveEntity(String publicId, String systemId)
Позволяет приложению разрешать внешние сущности.

Подробное описание методов

resolveEntity

InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException
Позволяет приложению разрешать внешние сущности.

Парсер вызовет этот метод перед открытием любой внешней сущности, кроме сущности документа верхнего уровня. К таким сущностям относятся внешнее подмножество DTD и внешние параметрические сущности, на которые есть ссылки в DTD (в обоих случаях — только если парсер считывает внешние параметрические сущности), а также внешние обобщенные сущности, на которые есть ссылки в элементе документа (если парсер считывает внешние обобщенные сущности). Приложение может запросить, чтобы парсер самостоятельно нашел сущность, использовал альтернативный URI или использовал данные, предоставленные приложением (в виде символьного или байтового входного потока).

Разработчики приложений могут использовать этот метод для перенаправления внешних системных идентификаторов на безопасные и/или локальные URI, поиска публичных идентификаторов в каталоге или чтения сущности из базы данных либо другого источника данных (включая, например, диалоговое окно). Ни XML, ни SAX не определяют предпочтительную политику использования публичных или системных идентификаторов для поиска ресурсов. Однако SAX определяет, как интерпретировать любой InputSource, возвращаемый этим методом, а также то, что, если он не возвращен, системный идентификатор будет разрешен как URL.

Если системный идентификатор является URL, парсер SAX должен полностью разрешить его, прежде чем передать приложению.

Параметры:
publicId — публичный идентификатор внешней сущности, на которую имеется ссылка, или null, если он не указан.
systemId — системный идентификатор внешней сущности, на которую имеется ссылка.
Возвращает:
Объект InputSource, описывающий новый источник ввода, или null, если парсеру следует открыть обычное соединение URI с системным идентификатором.
Выбрасывает:
SAXException — любое исключение SAX, возможно, обертывающее другое исключение.
IOException — специфичное для Java исключение ввода-вывода, возможно, возникшее при создании нового InputStream или Reader для InputSource.
См. также:
  • InputSource

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, включая концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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/xml/sax/EntityResolver.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API