2011-08-02 10 views
1

私は地元のXSDに対してXMLを検証する必要があると私は(このプロセスが実行される)ターゲットマシン上でインターネットに接続していません。コードは次のようになります。java.net.ConnectException: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が発生します。

正しく行われていないことを教えていただけますか?

多くのありがとうございます。 Abhishek

+0

XMLとスキーマを参照すると便利です。スキーマフラグメント、DTDなどの外部ロケーションへの参照がある可能性があります。それらを見つけ、ローカルコピーをダウンロードし、ローカルシステムパスへの参照を変更する必要があります。 –

答えて

1

ここでは、インターネットへの発信接続を試みる多くの参考文献があります。そのためにはローカルコピーをダウンロードする必要があります。しかし、XMLやスキーマファイルなどの参照を変更することはお勧めします。代わりに、EntityResolverを入力して、インターネットに接続する代わりにローカルコピーの内容を返すようにしてください。 (私は以前http://blogger.ziesemer.com/2009/01/xml-and-xslt-tips-and-tricks-for-java.html#InputValidationでこのことについて少し書きました。)

しかし、あなたのケースでは、あなたがValidator代わりのValidator.setResourceResolver(...)を使用しているので、 - とパスでLSResourceResolvervalidateを呼び出す前に。

関連する問題