2013-02-18 2 views
1

사용자 정의 java 클래스 "CustomDate1"이 java.util.Date를 확장하고 Schemagen에서 XSD 파일을 생성하려고합니다. 하지만 XSD 파일에서 "customDate1"확장 항목과 함께하지 않는 것, 왜, 어쩌면 JAXB 날짜 확장 클래스를 지원하지 않습니다?JAXB Schemagen에 의해 java.util.Date에서 확장되는 사용자 정의 Java 클래스에서 xsd를 생성하는 방법

자바 클래스 :

public class CustomDate1 extends java.util.Date { 

}

XSD 파일 :

<xs:complexType name="customDate1">

<xs:sequence/>

</xs:complexType>

,

Joey

답변

0

도메인 개체를 java.util.Date까지 확장해야합니까? 아래는 ans가 더 잘 작동 할 것으로 기대되는 XML 스키마를 생성하는 도메인 클래스입니다.

도메인 모델

우리는 유형 java.util.Date의 재산에 @XmlValue 주석을 활용합니다.

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; 
      } 

     }); 
    } 

} 
+0

직접적인 문제는 아니지만 문제를 해결할 수있는 방법이긴하지만 답장을 보내 주셔서 감사합니다. 감사. –