当前位置: 首页 > 知识库问答 >
问题:

JAXB:使用包含较少属性的XSD从Java生成XML

邢博学
2023-03-14

我的真实案例使用了大量具有大量属性的类,版本控制的数量可能是一个很大的数字。我希望存储每个版本的XSD,并通过动态指定包含版本号的XSD名称从Java类生成XMLs。

有没有可能实现我上面描述的需求,或者你有一个类似的解决方案来满足我的需求?

共有1个答案

曾德水
2023-03-14

JAXB是一个相当僵硬的框架,不支持您想要做的事情。

当您需要支持同一“对象”的不同版本时,有以下几种方法

  • 您可以手动解析xml(我的手动意思是使用XPath),这将为您提供很大的灵活性
  • 另一种方法在验证中更加严格,但需要更多的努力,它是使用几个XSD,您需要手动生成这些XSD,然后使用XSLT将使用XSD验证的不同XML消息转换为“标准”XML,而这个XML就是您使用JAXB映射的XML。这种模式有一些变体,您可以将不同的版本引入应用程序所需的版本。
 类似资料:
  • myType也被定义为complexType。然后得到生成的类MyResponse.java和Reference.java。我可以通过以下方式分配“引用”的值: 而且奏效了。 现在我只是删除了maxOccurs=“unbounded”,它不再起作用了。响应不再是List类型,而是JaxBelement类型。我试着用: 谁能告诉我,当它不是一个列表时,什么是正确的做法?

  • 我有两套XSD,一套用于入站操作,另一套用于出站操作。这两个XSD集具有相似的名称空间,但由于它们来自不同的源,因此需要在同一代码集中分别维护它们。每个XSD集合都有深度嵌套的类,并生成大约650个类。我正在使用Maven JAXB插件生成Java类 如果我指定了

  • 我有我的xml模式定义如下 我使用maven-jaxb2-plugin根据这个xsd生成Java类。 生成代码后,我发现所有元素都有@xmlement注释(required=true)。为什么?我有许多minOccurs=“0”元素。为什么元素上总是添加required=true。

  • B/src/main/gen pom.xml 我想在B项目中从XSD生成类,它存在于一个项目中 在B项目的pom.xml中,我有:

  • 我们试图使用gradle、xsd和xjc生成JAXB类,JAXB类应该具有XmlRootElement注释,以便可以将其作为web服务响应公开。我们正在跟踪这个链接http://azagorneanu.blogspot.com/2011/09/configure-maven-to-generate-classes.html,这很有帮助,但我们无法找到一个只有gradle的特定示例。所以我们想出了一

  • 如果 XML 是由 JAXB 类(而不是由 XSD)生成的,那么我没有要验证的 XSD。如何验证 XML?JAXB 在开始取消编组之前是否会自动对 XML 进行验证?