【问题标题】:How to export java JAXB Schema class to an xsd file?如何将 java JAXB Schema 类导出到 xsd 文件?
【发布时间】:2012-02-11 13:26:40
【问题描述】:

我遇到了一些 XML 验证问题,我正在尝试调试我的问题。我正在使用 JAXBContext.generateSchema() 动态生成我的 XSD,然后使用 SchemaFactory.newSchema(schemas) 创建一个统一的模式。但是,我的验证失败了。我想看看 newSchema 正在创建的统一模式是否如我所料,但是我似乎找不到将生成的 Schema 类导出到字符串或文本文件的方法。

有没有办法将 javax.xml.validation.Schema 类导出到可读的字符串和/或 XSD 文件中?我查看了 API,似乎找不到任何东西。

谢谢,

埃里克

【问题讨论】:

    标签: java validation jaxb schema


    【解决方案1】:

    与其在从 JAXBContext.generateSchema() 创建模式之后组合它们,不如直接从 JAXBContext 中一次性生成它们。

    JAXBContext jc = JAXBContext.newInstance( new Class[] { Class1.class,
                                                            Class2.class,
                                                            Class3.class
                                                          }
                                            );
    jc.generateSchema(new SchemaOutputResolver() {
        @Override
        public Result createOutput(String namespaceUri, String suggestedFileName) throws IOException {
          File file = new File(suggestedFileName);
          return new StreamResult(file);
        }
    });
    

    【讨论】:

    • 我已经有一段时间没有看这段代码了,但是如果你有多个命名空间,你就不能这样做。可以在stackoverflow.com/a/2696765/827480 找到生成具有不同命名空间的多个模式的解决方案。但是,此时我的问题是以正确的顺序将它们全部解决。我最终让它工作(参见stackoverflow.com/a/8885327/827480),但仍然想知道是否有任何方法可以导出统一模式。到目前为止,还没有找到解决该问题的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 2014-06-17
    • 2014-05-04
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    相关资源
    最近更新 更多