gpt4 book ai didi

java - xjc: 覆盖 xs:simpleType 定义

转载 作者:行者123 更新时间:2023-11-30 07:04:53 26 4
gpt4 key购买 nike

我正在使用 xjc 将一组 XSD 编译为 Java 类。我希望能够覆盖给定简单类型的数据类型定义。 XSD 片段是:

<xs:simpleType name="CPT-DateTime">
<xs:annotation>
<xs:appinfo>Can be specified as a integer number or as xs:dateTime</xs:appinfo>
</xs:annotation>
<xs:union memberTypes="xs:unsignedLong xs:dateTime"/>
</xs:simpleType>

这导致(不足为奇)CPT-DateTime 类型的元素在生成的 Java 类中被定义为 String,例如

public class CcReportTrainInitialization {
...
@XmlElement(required = true)
protected String time;
...
public String getTime() {
return time;
}

public void setTime(String value) {
this.time = value;
}
...

我想要的是 time 的数据类型(在本例中)是特定于日期时间的类型,例如XMLGregorianCalendar 或类似的东西:

public class CcReportTrainInitialization {
...
@XmlElement(required = true)
protected XMLGregorianCalendar time;
...
public XMLGregorianCalendar getTime() {
return time;
}

public void setTime(XMLGregorianCalendar value) {
this.time = value;
}
...

这可能吗?

我一直在尝试使用绑定(bind)文件,但我不确定它是否可行。有什么建议吗?

最佳答案

一旦找到正确的咒语,这实际上非常容易;这是绑定(bind)文件:

<?xml version="1.0" encoding="UTF-8"?>
<jxb:bindings jxb:version="2.1" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<jxb:bindings node="/xs:schema" schemaLocation="../TCIP_4_0_0_Final.xsd">
<jxb:bindings node="//xs:simpleType[@name='CPT-DateTime']">
<jxb:class ref="javax.xml.datatype.XMLGregorianCalendar"/>
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>

关于java - xjc: 覆盖 xs:simpleType 定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27239406/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com