Получите XMLReader, который гарантированно вызовет мой EntityResolver - PullRequest
0 голосов
/ 19 февраля 2019

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

Что бы я ни использовал в своем приложении XMLReader (на одномопределенный путь), чтобы иметь возможность установить свой собственный EntityResolver на XMLReader.Проблема в том, что Apache ResolvingXMLReader молча игнорирует мою попытку установить EntityResolver на том основании, что он хочет использовать свой собственный.

Я ищу идеи / предложения о том, как обойтиэта проблема.

Во-первых, выявление ситуации.Явно проверяя, является ли XMLReader, который мне дали, Apache ResolvingXMLReader не кажется очень чистым решением;другие реализации могут иметь такую ​​же проблему.Установка EntityResolver и поиск, чтобы узнать, действительно ли он вызывается, кажется дорогим и довольно чрезмерно оборонительным.

Во-вторых, что делать, если ситуация обнаружена?Я был бы счастлив получить экземпляр XML-парсера, которому я могу доверять, например, тот, что в JDK.Есть ли способ получить экземпляр XMLReader по умолчанию для платформы, не зная его действительного имени, учитывая, что имя не обязательно будет стабильным?

Обратите внимание, что я говорю об одном специализированном внутреннем пути, где этонужно.В общем, я очень рад, что пользователи перенаправили мой код для использования Apache ResolvingXMLReader для всего остального.

Есть идеи?

...