我有一个自定义的java类“CustomDate1”扩展了java.util.Date,我想通过Schemagen为它生成XSD文件。但似乎在XSD文件中,“customDate1”没有扩展项,我不知道为什么,也许JAXB不支持扩展Date的类?
Java类:
public class CustomDate1 extends java.util.Date {
}
XSD文件:
<xs:complexType name="customDate1">
<xs:sequence/>
</xs:complexType>
乔伊
答案 0 :(得分:0)
您的域对象是否需要扩展java.util.Date
?下面是一个域类,它将生成您正在寻找的XML模式,可能更适合您。
域名模型
我们将在@XmlValue
类型的属性上使用java.util.Date
注释。
import java.util.Date;
import javax.xml.bind.annotation.*;
@XmlAccessorType(XmlAccessType.FIELD)
public class Foo {
@XmlValue
private Date value;
@XmlAttribute
private String bar;
}
XML架构
在下面的架构中,我们看到有一种扩展xsd:dateTime
的类型。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="foo">
<xs:simpleContent>
<xs:extension base="xs:dateTime">
<xs:attribute name="bar" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:schema>
架构生成代码
以下JAXB代码可用于从JAXB模型生成XML模式。
import java.io.IOException;
import javax.xml.bind.*;
import javax.xml.transform.Result;
import javax.xml.transform.stream.StreamResult;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Foo.class);
jc.generateSchema(new SchemaOutputResolver() {
@Override
public Result createOutput(String namespace, String suggestedFileName)
throws IOException {
StreamResult result = new StreamResult(System.out);
result.setSystemId(suggestedFileName);
return result;
}
});
}
}