微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 XSD 删除命名空间引用生成类

如何解决从 XSD 删除命名空间引用生成类

我有一组相当大的 XSD 文件。由此我正确生成了 Java 类(我正在使用 org.apache.cxf.cxf-xjc-plugin)。我的问题是我从 Web 服务获得的响应不使用命名空间(显然我无法要求服务提供者更改响应)。因此,我使用 jaxb 的解组步骤无法填充内部对象字段。

我用来解组的代码是(类似于)这个:

    private <T> T unmarshalFromStr(String str,Class<T> clazz) throws JAXBException {
        jaxbCtx = JAXBContext.newInstance(MyGneratedClass1.class,MyGneratedClass2.class,...);
        Unmarshaller unmarshaller = jaxbCtx.createUnmarshaller();
        JAXBElement<T> obj = unmarshaller.unmarshal(new StreamSource(new StringReader(str)),clazz);
        return obj.getValue();
    }

我(显然)不想重写 xsd 文件或手动修改生成的类。

有什么提示吗?

提前致谢。

解决方法

我不确定这是否完全符合您的目的,但您可以尝试使用绑定文件来自定义您的 JAXB 类创建并使用您自己的包引用。 有关文档,请查看 this 和一些示例 here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。