gpt4 book ai didi

java - 如何从普通 java 类访问 webcontent 文件夹内的 xsd 文件?

转载 作者:行者123 更新时间:2023-11-28 22:49:12 25 4
gpt4 key购买 nike

我有一个部署在 tomcat 服务器上的 war 文件。这场 war 在 webcontent -> WEB-INF -> resources -> HumanActivitySchema.xsd 位置有 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 文件吗?

最佳答案

你有两个选择:

  1. 通过将 XSD 放在 WEB-INF/classes 目录中,将其放入类路径中,并加载它:

    getClass().getClassLoader() .getResourceAsStream("/HumanActivitySchema.xsd")

    注意前面的斜杠 ('/')。您也可以将它放在与您的 Java 类的包名称匹配的文件夹中,并省略前面的“/”。

  2. 通过 ServletContext#getResourceAsStrem(String path) 读取 XSD方法。在你的情况下,路径是

    /HumanActivitySchema.xsd

关于java - 如何从普通 java 类访问 webcontent 文件夹内的 xsd 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46091853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com