Редактировать: Решено путем удаления jar xercesImpl из build.gradle.
Я пытаюсь установить функцию useCatalog для экземпляра SAXParserFactory
.В моем тестировании я получаю обратно
SAXNotRecognizedException: Feature 'http://javax.xml.XMLConstants/feature/useCatalog' is not recognized.
Как правильно установить функцию useCatalog для SAXParserFactory
?
Я также пытаюсьустановить свойство CATALOG_FILE
для SAXParser
, но мои тесты возвращают
SAXNotRecognizedException: Property 'javax.xml.catalog.files' is not recognized.
Как правильно установить свойство каталога для SAXParser
?
Мой пример кода соответствует примеру JavaDoc, предоставленному для XMLConstants.USE_CATALOG
.
private static final String CATALOG_FILE = CatalogFeatures.Feature.FILES.getPropertyName();
private static final String CATALOG_PREFER = CatalogFeatures.Feature.PREFER.getPropertyName();
SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setNamespaceAware(true);
spf.setXIncludeAware(true);
spf.setFeature(XMLConstants.USE_CATALOG, true);
SAXParser parser = spf.newSAXParser();
if (catalogURIs.size() > 0) {
List<URI> catalogUriList = new ArrayList<>();
for (String uriString : catalogURIs) {
catalogUriList.add(URI.create(uriString));
}
CatalogResolver resolver =
CatalogManager.catalogResolver(CatalogFeatures.defaults(),
catalogUriList.toArray(new URI[catalogUriList.size()]));
parser.setProperty(CATALOG_FILE, resolver);
parser.setProperty(CATALOG_PREFER, "system");
}