我只是想知道是否有人可以一次性提供我的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 />导入到模式中的元素。架构似乎通过W3C XML Schema Validator验证确定。
我是否必须单独包含这些模式中的每一个,或者Java是否足够智能,以便获取这些额外的模式?我尝试在传递给newSchema调用的数组中添加它们,但这没有任何区别。
我认为我不能给出架构的链接,所以我真的只是在寻找是或否的,如果我的代码看起来至少可以接受。
答案 0 :(得分:1)
确保xs:import语句指向可从应用程序的当前目录访问的路径。当前目录可能不是您的想法。