1

ローカル XSD に対して XML を検証する必要がありますが、ターゲット マシン (このプロセスが実行されるマシン) にインターネット接続がありません。コードは次のようになります。

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 のコメントに同意します。ここには、インターネットへの発信接続を試行する参照が多数ある可能性があり、それらのローカル コピーをダウンロードする必要があります。ただし、XML ファイルやスキーマ ファイルなどの参照を変更しないことをお勧めします。EntityResolver代わりに、インターネットに接続する代わりに、ローカル コピーのコンテンツを返す を提供してください。(これについては、以前http://blogger.ziesemer.com/2009/01/xml-and-xslt-tips-and-tricks-for-java.html#InputValidationで少し書きました。)

ただし、あなたの場合、 - のValidator代わりにa を使用しているため、 を呼び出す前Validator.setResourceResolver(...)に a を渡します。LSResourceResolvervalidate

于 2011-12-28T02:12:33.253 に答える