如何从普通java类访问webcontent文件夹中的xsd文件?
我有一个war文件,它部署在tomcat服务器上。此war的xsd文件位于webcontent->WEB-INF->resources->HumanActivitySchema.xsd位置 我有一个java类,它试图加载模式以验证输入xml结构。这个java类是war文件部署的一部分 我的java代码函数如下所示:如何从普通java类访问webcontent文件夹中的xsd文件?,java,xml,tomcat,xsd,Java,Xml,Tomcat,Xsd,我有一个war文件,它部署在tomcat服务器上。此war的xsd文件位于webcontent->WEB-INF->resources->HumanActivitySchema.xsd位置 我有一个java类,它试图加载模式以验证输入xml结构。这个java类是war文件部署的一部分 我的java代码函数如下所示: public boolean validateXMLSchema(String iActivity){ Source schemaFile = new StreamSou
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的所有字段都是空的。因此,异常会在工厂.newSchema(schemaFile)点抛出
有人能告诉我我做错了什么,我应该做什么更改才能加载.xsd文件吗?您有两种选择:
非常感谢您的解决方案。我使用了您的第一个解决方案,如前所述,将xsd文件放在WEB-INF/classes目录中。这对我很有效。非常感谢!:)