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

时间:2017-09-07 08:46:05

标签: java xml tomcat xsd

我有一个部署在tomcat服务器上的war文件。这场战争在位置webcontent处有xsd文件 - > WEB-INF - >资源 - > HumanActivitySchema.xsd

我有一个java类,它试图加载模式来验证输入的xml结构。这个java类是war文件部署的一部分。

我的java代码函数如下:

const fs = require("fs");
const path = require("path");

// build an object that looks like 
// {
//      "filename": "./filename.vue"
// }
// to list the entry points for webpack to compile.
function buildEntry() {
    const reducer = (entry, file) => { entry[file.split(".").shift()] = 
`./Vue/${file}`; return entry; };

    return fs.readdirSync(path.join(__dirname, "Vue"))
         .filter(file => file.endsWith(".vue"))
         .reduce(reducer, {});
}

module.exports = {
    entry: buildEntry(),
    output: {
        path: path.join(__dirname, "Vue"),
        filename: "[name].js",
        library: "[name]"
    },
    module: {
         loaders: [
             { test: /\.vue$/, loader: 'vue-loader' },
        ],
     }
} 

但是这段代码的问题是,它找不到xsd文件。因此,schemaFile的所有字段都为null。因此,在 factory.newSchema(schemaFile)点抛出异常。

任何人都可以告诉我我做错了什么以及我应该做些什么更改才能加载我的.xsd文件?

1 个答案:

答案 0 :(得分:1)

您有两种选择:

  1. 将XSD置于类路径中,方法是将其放在WEB-INF / classes目录中,然后将其加载到:

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

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

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

    /HumanActivitySchema.xsd