Механизм JAXP для получения эффекта XMLReader
позволяет выбрать XMLReader
, настраивая свойства системы.Один из популярных вариантов (по уважительным причинам) - использовать Apache ResolvingXMLReader
, который использует файл каталога для перенаправления ссылок на URI.
Что бы я ни использовал в своем приложении XMLReader
(на одномопределенный путь), чтобы иметь возможность установить свой собственный EntityResolver
на XMLReader
.Проблема в том, что Apache ResolvingXMLReader
молча игнорирует мою попытку установить EntityResolver
на том основании, что он хочет использовать свой собственный.
Я ищу идеи / предложения о том, как обойтиэта проблема.
Во-первых, выявление ситуации.Явно проверяя, является ли XMLReader, который мне дали, Apache ResolvingXMLReader
не кажется очень чистым решением;другие реализации могут иметь такую же проблему.Установка EntityResolver
и поиск, чтобы узнать, действительно ли он вызывается, кажется дорогим и довольно чрезмерно оборонительным.
Во-вторых, что делать, если ситуация обнаружена?Я был бы счастлив получить экземпляр XML-парсера, которому я могу доверять, например, тот, что в JDK.Есть ли способ получить экземпляр XMLReader по умолчанию для платформы, не зная его действительного имени, учитывая, что имя не обязательно будет стабильным?
Обратите внимание, что я говорю об одном специализированном внутреннем пути, где этонужно.В общем, я очень рад, что пользователи перенаправили мой код для использования Apache ResolvingXMLReader
для всего остального.
Есть идеи?