Конфигурация Apache Commons2 и проверка схемы XML?JAVA

Программисты JAVA общаются здесь
Anonymous
Конфигурация Apache Commons2 и проверка схемы XML?

Сообщение Anonymous »

Я хочу загрузить конфигурацию XML через Apache Commons Configuration2, а также выполнить проверку XSD. XSD не должен быть связан с (потенциально ненадежным) файлом конфигурации, а исходить из приложения.
Мне не удалось найти подходящие примеры ни в документации, ни в StackOverflow. На единственный вопрос, похожий на мой, ответ применим только к конфигурации Apache Commons Configuration1, и этот ответ неприменим ко мне.
Как мне загрузить и проверить файл конфигурации XML?< /p>
Изменить: кто-то проголосовал за этот вопрос, требуется дополнительная информация, поэтому вот они.
Пример проверки XSD в Документация по конфигурации Apache Commons выглядит следующим образом:

Код: Выделить всё

Parameters params = new Parameters();
FileBasedConfigurationBuilder builder =
new FileBasedConfigurationBuilder(XMLConfiguration.class)
.configure(params.xml()
.setFileName("myconfig.xml")
.setSchemaValidation(true));

// This will throw a ConfigurationException if the XML document does not
// conform to its Schema.
XMLConfiguration config = builder.getConfiguration();
Здесь предполагается, что файл конфигурации XML (

Код: Выделить всё

myconfig.xml
) считывается и проверяется в соответствии со схемой XSD. Какая схема? Ну, на него должна быть ссылка внутри XML-документа. Вместо этого я хочу, чтобы мое приложение определяло, какая схема XSD должна использоваться для проверки. Поэтому я ожидаю, что в какой-то момент кода будет указана схема XSD и она будет использоваться для проверки. Вот что я пробовал:

Код: Выделить всё

File f = new File(xmlfile);
log.info("Reading {}", f.getAbsoluteFile());

URL url = getClass().getResource("/schema/configuration.xsd");
log.trace("loading XSD from {}", url);

SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Source schemaFile = new StreamSource(url.openStream());
Schema schema = factory.newSchema(schemaFile);

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setSchema(schema);
dbf.setNamespaceAware(true);
dbf.setValidating(false);
DocumentBuilder db = dbf.newDocumentBuilder();
MyErrorHandler meh = new MyErrorHandler();
db.setErrorHandler(meh);
db.parse(f);                     // 

Подробнее здесь: [url]https://stackoverflow.com/questions/78483926/apache-commons-configuration2-and-xml-schema-validation[/url]

Вернуться в «JAVA»