|
|
1
6
从现有类中生成XSD对我来说是最安全的方式。 然而,我认为,除非你很了解JAXB,否则注释你自己的类的方法可能会非常令人沮丧(无论是痛苦还是时间)。 当我试图从JAXB生成的类中手动提取超类,然后将实例封送到XML时,在相关的上下文中发生了这种情况。我得到了各种(神秘的)JAXB例外。是的,我的JAXB知识还没有那么深。 如果您坚持使用JAXB,那么我建议考虑使用第一种方法(XSD+XJC)作为获取类的初始JAXB注释的方法。 您可以使用xsd+xjc来了解如何注释您自己的类。然后,您可以尝试将正确的注释安装到它们上。从更复杂的类(引用、继承、引用列表、抽象基类的引用列表)开始。 使用另一种技术从没有注释的类中生成XSD作为XSD的起点可能会有所帮助。或者您可以选择一个XSD,它覆盖了您的类使用的大部分内容。 如果这项工作的目的也是能够将实例封送到XML中,那么我建议时刻关注JAXBRelement。在某些情况下(由于缺乏知识,我无法固定点),除非将实例包装在JAXB元素中,否则它们不会封送。 我们使用hyperjaxb基于一组XSD生成持久层。生成的类也用于封送处理。我们有很多“乐趣”使这个工作,特别是因为idrefs和jaxbelement。 |
|
|
2
2
从字里行间看,我相信以下是真的:
这种情况通常被称为“中间会合”映射。只有JAXB部分解决了这个问题。幸运的是,由于JAXB是一个规范,所以还有其他的实现,比如EclipseLink JAXB(Moxy)。 MOXY提供了一个基于XPath的映射扩展,允许您在您所拥有的Java模型和所需的XML架构之间进行映射: |
|
3
1
您可以使用XJC,并且仍然只有一个带有XML注释的类,这些注释将作为数据对象服务器。但这是为了防止您没有在每个构建上重新生成类。
在我看来,正如在中一样,对于从哪里开始的问题,我建议从类开始。因为如果您将类作为起点,那么您将永远不需要重新生成这些类。随着时间的推移,你的课程开始成长——包括
|
|
|
4
1
对于JAXB来说,你可能是最糟糕的起点。在你的位置上,我在想 JiBX 最好的办法是,它可以从一个没有注释的类模型生成模式,然后在运行时将XML绑定到对象模型上,而不使用注释。 |
|
|
5
1
我们的解决方案是有一个单独的项目,包含由JavaSchema定义的所有数据模型,使用JAXB派生Java类。其他使用数据模型的项目依赖于这个模式包。 这样,项目之间的所有“契约”都在一个地方定义,使用nice可移植的XSD表示。不需要任何映射类,因为我们只直接使用JAXB生成的类。 |
|
|
Alan Silva · 如何反序列化XML列表? 8 年前 |
|
|
yogsma · 从XSD模式生成Java类 8 年前 |
|
|
jsosnowski · JAXB、XJC:生成字段到类大纲 8 年前 |
|
|
akash prasad · 当我尝试POST请求时得到400响应 8 年前 |
|
|
Ayo K · 将Soap XML响应转换为对象 8 年前 |