私はTomcatサーバーに展開されたwarファイルを持っています。この戦争では、場所webcontent - > WEB-INF - > resources - > HumanActivitySchema.xsdにxsdファイルがあります。通常のJavaクラスからwebcontentフォルダ内のxsdファイルにアクセスする方法は?
入力XML構造を検証するためにスキーマをロードしようとしているJavaクラスがあります。このJavaクラスは、warファイルのデプロイメントの一部です。
私のJavaコードの機能は次のようになります。
public boolean validateXMLSchema(String iActivity){
Source schemaFile = new StreamSource(getClass().getClassLoader()
.getResourceAsStream("HumanActivitySchema.xsd"));
try {
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(schemaFile);
Validator validator = schema.newValidator();
validator.validate(new StreamSource(new StringReader(iActivity)));
}
catch (IOException | SAXException e) {
if(DBG){
System.out.println("Error Message while validating activity : " + e.getMessage());
}
return false;
}
return true;
}
しかし、このコードの問題は、それがXSDファイルを見つけていない、です。したがって、schemaFileのすべてのフィールドはnullです。その結果、例外はfactory.newSchema(schemaFile)ポイントにスローされます。
誰かが私が間違っていることを教えてもらえますか、私は自分の.xsdファイルをロードできるように何をすべきですか?
おかげでたくさんのだろう。私はあなたの第一の解決策を使用し、WEB-INF/classesディレクトリ内にxsdファイルを置いています。そしてそれは私のために働いた。どうもありがとう! :) – Madhusudan