Ошибка при попытке проверить XML в Java - PullRequest
2 голосов
/ 28 июля 2010

Я пытаюсь проверить один xml, который я создаю, с помощью локальной схемы, но выдает какую-то странную ошибку.Мой код:

SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(true);
factory.setNamespaceAware(true);

SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");

factory.setSchema(schemaFactory.newSchema(
   new Source[] {new StreamSource("\\.\\schema\\xsd_me_ene_diaria.xsd")}));

И мой след стека следующий:

java.lang.UnsupportedOperationException: This parser does not support specification "null" version "null"
at javax.xml.parsers.SAXParserFactory.setSchema(Unknown Source)
at SaxValidacao.validateSchema(SaxValidacao.java:36)

Ошибка генерируется сразу после вызова setSchema.

Некоторая подсказка или другой совет дляПроверка XML в Java?

Ответы [ 4 ]

3 голосов
/ 28 июля 2010

Одна вещь, которая иногда случается, - это смешивание разных версий парсера.Если вы используете Java 5 или выше, попробуйте удалить ссылки на любые внешние библиотеки xalan или xerces.(Все, что вам нужно для обработки xml, включено в стандартный дистрибутив java 5)

1 голос
/ 18 августа 2016

Я нашел решение в статье CodeWall, добавив Java-код в одну строку к вашей базе кода.

System.setProperty("javax.xml.parsers.SAXParserFactory","com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl");

Пожалуйста, обратитесь, чтобы получить более подробную информацию: https://coderwall.com/p/kqsrrw/jdom2-this-parser-does-not-support-specification-null-version-null

1 голос
/ 28 июля 2010

Возможная проблема в том, что ваш анализатор JAXP очень старый и не поддерживает метод setSchema.Посмотрите на javadoc для SAXParsesrFactory.Для setSchema (и многих других методов) он говорит:

Броски:

java.lang.UnsupportedOperationException - Для обратной совместимости, когда реализации для более ранних версийof JAXP, будет выдано это исключение.

Проверьте используемую реализацию синтаксического анализатора и попробуйте обновить его до более новой версии.

1 голос
/ 28 июля 2010

Можете ли вы отключить проверку и проанализировать поток?Если да, то это скорее всего не конфликт JAR.

Я думаю, что ваша проблема - доступ к схеме

...