Как установить функцию useCatalog в SAXParserFactory? - PullRequest
0 голосов
/ 04 декабря 2018

Редактировать: Решено путем удаления 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");
}
...