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

我们能否对jaxb全局绑定实施限制,以便将xs:dateTime映射到java。util。日期

葛俊
2023-03-14

我有3个模式,每个都有xs: dateTime。为了表示xs: dateTime作为java jaxb对象中的java.util.日期,我使用binding.xjb如下所示

<bindings schemaLocation="schema1.xsd">
    <schemaBindings>
        <package name="com.mycompany.ims.schema1" />
    </schemaBindings>
</bindings> 
<bindings schemaLocation="schema2.xsd">
    <schemaBindings>
        <package name="com.mycompany.ims.schema2" />
    </schemaBindings>
</bindings> 
<bindings schemaLocation="schema3.xsd">
    <schemaBindings>
        <package name="com.mycompany.ims.schema3" />
    </schemaBindings>
</bindings>     

 <globalBindings>
    <javaType name="java.util.Date" xmlType="xs:dateTime"
      parseMethod="com.mycompany.ims.utils.JaxbDateAdapter.parseDateTime"
      printMethod="com.mycompany.ims.utils.JaxbDateAdapter.printDateTime"
    />
    <javaType name="java.util.Date" xmlType="xs:date"
      parseMethod="com.mycompany.ims.utils.JaxbDateAdapter.parseDate"
      printMethod="com.mycompany.ims.utils.JaxbDateAdapter.printDate"
    />
</globalBindings> 

如果我生成jaxb对象,那么所有xs:dateTime元素都表示为java。util。日期我有一个要求,在其中一个模式(比如schema1.xsd)中,我不想将xs:dateTime元素表示为java。util。日期

是否有任何方法可以配置为针对特定模式或基于节点名进行限制?有人能帮忙吗。

我通过添加下面的xjb配置解决了这个问题,我编辑了这篇文章来帮助像我一样面临同样问题的人

<bindings schemaLocation="schema1.xsd">
    <bindings node="//xs:complexType[@name='ApplicationHeader1']">
        <bindings node=".//xs:element[@name='CreDt']">
          <javaType name="java.util.Date" 
          parseMethod="com.mycompany.ims.utils.JaxbDateAdapter.parseUTCDateTime"
          printMethod="com.mycompany.ims.utils.JaxbDateAdapter.printUTCDateTime"
            />
        </bindings>
    </bindings> 
    <bindings node="//xs:complexType[@name='ApplicationHeaderV01']">
        <bindings node=".//xs:element[@name='CreDt']">
          <javaType name="java.util.Date" 
          parseMethod="com.mycompany.ims.utils.JaxbDateAdapter.parseUTCDateTime"
          printMethod="com.mycompany.ims.utils.JaxbDateAdapter.printUTCDateTime"
            />
        </bindings>
    </bindings>
</bindings>

共有1个答案

华星文
2023-03-14

只需对不同的模式使用不同的绑定文件即可。在schema1中使用一个。没有xs:dateTime自定义的xsd,以及另一个用于其他模式的xsd。

 类似资料:
  • 问题内容: 我很确定,这是有关XML到Java Object转换的许多重复问题之一。但是由于找不到更简单的解决方案,所以我启动了该线程。 我有一个xsd [实际上是我正在设计]和xml。我想按照映射将xml数据自动映射到Java bean 现在我的Java类将是 是否有任何简单的工具/框架可以将数据从XML自动映射到Java Bean [必须支持属性/元素映射]。教程会很好。 顺便说一句,我正在使

  • 我的MBean部署在JBoss上。jboss日志记录级别设置为'info'。现在,当我将我的包的日志级别(java util logger)更改为“fine”(通过设置日志级别以编程方式运行时)时,它不会追加任何logger.fine(“....”)的消息。信息被过滤掉了。 是否有任何方法可以将java util记录器日志级别的更改传播到jboss日志级别?(java util有不同的级别->SE

  • 问题内容: 我已经编写了一个JAX-RS(Jersey)REST服务,该服务接受ONIX XML格式的XML消息。通常,我已经使用xjc从给定架构生成了JAXB绑定所需的所有类。总体上有500多个类,我无法对其进行修改。 现在,当我有一个JAXB映射的对象时,我需要将其存储到数据库中。我使用mongoDb,因此消息格式应为JSON。我试图将Jackson与JAXB模块一起使用,以将JAXB对象转换

  • 我在这里尝试遵循本指南: https://github . com/Spring-projects/Spring-Boot/wiki/Spring-Boot-Configuration-Binding 但是我正在努力让它工作。 我想从 application.yml 中定义的映射初始化哈希映射。 这是我最后一次尝试yml-map定义: 这是我的java类: 我想将“组合”和注入为键,并将值注入为字

  • 我从一个xml模式生成java类,对于一个复杂类型,我希望jaxb使用一个现有的类,我有一个外部绑定定制文件。自定义类被解组为正确的,除了该类型的单个属性,该属性从未在java类中填充。 下面是类型/类问题的演示。 模式中定义的内容是: 读取匹配xml文件的代码段是: 在这个xml中阅读: 使用JAXB生成的Thing类(不使用自定义xjb),输出符合预期: 使用只有getters的自定义Thin

  • 我有两个HiberNate实体,和,具有一对多的关系,因为一个文档有多个标题,每种语言一个。有一个属性和通过引用。 因此,要将标题连接到文档,自然的解决方案是如下字段: 对于排序,我目前将一个< code>Sort对象传递给JPA存储库,例如< code > repository . find all(my Sort)。排序顺序属性可以引用可传递属性,例如< code>owner.firstnam