【发布时间】:2018-02-15 22:14:18
【问题描述】:
我有一个部署在 tomcat 服务器上的 war 文件。这场战争的 xsd 文件位于 webcontent -> WEB-INF -> 资源 -> HumanActivitySchema.xsd
我有一个 java 类,它试图加载模式以验证输入 xml 结构。这个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 的所有字段都是空的。结果在 factory.newSchema(schemaFile) 点引发异常。
谁能告诉我我做错了什么以及我应该做哪些更改才能加载我的 .xsd 文件?
【问题讨论】: