【问题标题】:java.net.ConnectException : Validating Xml against XSD : local machinejava.net.ConnectException:针对 XSD 验证 Xml:本地计算机
【发布时间】:2011-10-18 03:49:23
【问题描述】:

我需要根据本地 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。

您能告诉我什么地方做得不对吗?

非常感谢。 阿布舍克

【问题讨论】:

  • 看看 XML 和 Schema 会很有帮助。您可能对架构片段、DTD 等的外部位置有一个引用。您需要找到它们,下载本地副本,并更改​​对本地系统路径的引用。

标签: java xml validation xsd connectexception


【解决方案1】:

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

但是,就您而言,由于您使用的是Validator 而不是Validator.setResourceResolver(...) - 并在调用validate 之前传入LSResourceResolver

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-20
    • 2011-10-12
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    • 2013-07-30
    相关资源
    最近更新 更多