1

我需要针对本地 XSD 验证 XML,并且我在目标机器上没有 Internet 连接(此过程在其上运行)。代码如下所示:

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

File schemaLocation = new File(xsd);

Schema schema = factory.newSchema(schemaLocation);

Validator validator = schema.newValidator();

Source source = new StreamSource(new BufferedInputStream(new FileInputStream(new File(xml))));

validator.validate(source);

调用 validate() 时,我总是得到 java.net.ConnectException。

你能告诉我什么没有正确完成吗?

非常感谢。阿布舍克

4

1 回答 1

1

同意 Mads 的评论 - 这里可能有很多参考资料会尝试与 Internet 的传出连接,您需要为它们下载本地副本。但是,我建议不要更改 XML 或模式文件等中的引用 - 而是提供EntityResolver返回本地副本的内容而不是连接到 Internet。(我之前在http://blogger.ziesemer.com/2009/01/xml-and-xslt-tips-and-tricks-for-java.html#InputValidation上写了一些关于此的内容。)

但是,在您的情况下,由于您在调用之前使用 aValidator而不是Validator.setResourceResolver(...)- 并传入 a 。LSResourceResolvervalidate

于 2011-12-28T02:12:33.253 回答