Вопрос

Мне просто интересно, может ли кто-нибудь еще раз просмотреть мой код проверки XML, чтобы проверить, правильно ли я это делаю.Вот часть кода, которая доставляет мне проблемы...

SAXParserFactory factory = SAXParserFactory.newInstance();

SchemaFactory schemaFactory = SchemaFactory
    .newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);

// *** CODE FAILS ON THE BELOW LINE **/
factory.setSchema(schemaFactory
    .newSchema(new Source[] { new StreamSource(schemaStream) }));

SAXParser parser = factory.newSAXParser();

SAXReader reader = new SAXReader(parser.getXMLReader());
reader.setValidation(false);
reader.setErrorHandler(new ResultProducingErrorHandler());
reader.read(content);

Всякий раз, когда я запускаю приведенный выше код, я получаю сообщение об ошибке следующего содержания:

src-resolve: Cannot resolve the name 'ns:myStructure' to a(n) 'type definition' component.

Все элементы, упомянутые в сообщениях об ошибках, импортируются в схему посредством вызовов <xs:import />.Схема, кажется, подтверждается ОК через Валидатор XML-схемы W3C.

Должен ли я включать каждую из этих схем по отдельности или Java достаточно умен, чтобы получить и эти дополнительные схемы?Я попытался добавить их в массив, переданный при вызове newSchema, но это не имело никакого значения.

Я не думаю, что смогу дать ссылку на схему, поэтому мне просто нужен ответ «да» или «нет» относительно того, выглядит ли мой код хотя бы приемлемым.

Это было полезно?

Решение

Убедитесь, что операторы xs:import указывают на пути, доступные из текущего каталога вашего приложения.Текущий каталог может быть не таким, как вы думаете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top