Проверка XML: правильно ли я делаю? - PullRequest
0 голосов
/ 03 марта 2009

Мне просто интересно, может ли кто-нибудь еще раз дать мой код проверки 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.

Все элементы, упомянутые в сообщениях об ошибках, импортируются в схему через вызовы . Схема, кажется, подтверждает правильность с помощью W3C XML Schema Validator .

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

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

1 Ответ

1 голос
/ 03 марта 2009

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

...