Конфигурация 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);    // ignore XSD references within the document
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]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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