Основной интерфейс для того, чтобы разрешить объекты.
Этот модуль, и исходный код и документация, находится в Общедоступном Домене, и прибывает без ГАРАНТИИ. См. http://www.saxproject.org для дополнительной информации.
Если приложение 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 или искать замены в каталоге (возможно при использовании общедоступного идентификатора).
Синтаксический анализатор вызовет этот метод прежде, чем открыть любой внешний объект кроме высокоуровневого объекта документа. Такие объекты включают внешнее подмножество DTD и внешние объекты параметра, на которые ссылаются в пределах DTD (в любом случае, только если синтаксический анализатор читает внешние объекты параметра), и внешние общие объекты, на которые ссылаются в пределах элемента документа (если синтаксический анализатор читает внешние общие объекты). Приложение может запросить, чтобы синтаксический анализатор определил местоположение объекта непосредственно, что это использует альтернативный URI, или что это использует данные, обеспеченные приложением (как символ или входной поток байта).
Писатели приложения могут использовать этот метод, чтобы перенаправить внешние системные идентификаторы, чтобы защитить и/или локальные URI, искать общедоступные идентификаторы в каталоге, или считать объект из базы данных или другого входного источника (включая, например, диалоговое окно). Ни XML, ни SAX не определяют привилегированную политику для того, чтобы использовать общественность или системные ID, чтобы разрешить ресурсы. Однако, SAX определяет, как интерпретировать любой InputSource, возвращенный этим методом, и что, если ни один не возвращается, тогда системный ID будет разыменован как URL.
Если системным идентификатором является URL, синтаксический анализатор SAX должен разрешить это полностью прежде, чем сообщить об этом приложению.
Параметры:
publicId - Общедоступный идентификатор внешнего объекта, ссылаемого, или нуль, если ни один не был предоставлен.
Описание объекта InputSource нового входного источника, или нуля, чтобы запросить, чтобы синтаксический анализатор открыл регулярное соединение URI с системным идентификатором.
Броски:
SAXException - Любое исключение SAX, возможно обертывая другое исключение.
IOException - Специфичное для Java исключение IO, возможно результат создания нового InputStream или Читателя для InputSource.