Spec-Zone.ru › OpenJDK 24

Интерфейс 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(org.xml.sax.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

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

Spec-Zone.ru

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