XML-проверка:Правильно ли я делаю?
-
03-07-2019 - |
Вопрос
Мне просто интересно, может ли кто-нибудь еще раз просмотреть мой код проверки 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 указывают на пути, доступные из текущего каталога вашего приложения.Текущий каталог может быть не таким, как вы думаете.