2013-03-22 4 views
1

JAXB에 제공된 XML 파일에 주석을 추가하고 싶습니다.JAXB xml에 주석 추가

동일한 속성 이름과 데이터 유형으로 개체를 만들지 만 다른 JSON 키가 있어야한다는 요구 사항이 있습니다.

JSON의 키 이름은 제공된 주석에 따라 다릅니다. 이러한 주석은 GSON 주석 (예 : @SerializedName)입니다 ("원하는 JSON의 키 이름").

은 내가

here

를 기록하지만 실제로는 모든 솔루션을 얻을 수있는 질문에서 약간의 입력을 얻기 위해 노력했다.

누구든지 의견이 있습니까?

설명 할 XML 스키마를 추가 할 예정입니다.

<xsd:complexType name="RouteType"> 
<xsd:attribute name="Pos" type="xsd:int" use="optional" default="1"/> 
<xsd:attribute name="Dir" type="DirType" use="required"/> 
</xsd:complexType> 

이제 위 스키마에서 Pos? 속성에 주석을 추가 할 수 있습니까?

+0

JAXB XML에 주석을 추가한다고 할 때 정확히 무엇을 의미합니까? –

+1

질문을 약간 수정하여 이해하기 쉽습니다. – Sam

답변

2

JAXB 컴파일러에서 생성 된 클래스에 자동으로 주석을 달도록 요청하는 것으로 가정합니다. http://confluence.highsource.org/display/J2B/Annotate+Plugin

당신과 같이 빌드 메이븐의 generate-sources 단계로 그것을 연결할 수 있습니다 : 추가 주석에 대한 JAXB 플러그인있다

<build> 
    <!-- snip --> 
    <plugins> 
     <plugin> 
      <groupId>org.jvnet.jaxb2.maven2</groupId> 
      <artifactId>maven-jaxb2-plugin</artifactId> 
      <version>0.8.2</version> 
      <executions> 
       <execution> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>generate</goal> 
        </goals> 
        <configuration> 
         <schemaIncludes> 
          <include>path/to/your/schema.xsd</include> 
         </schemaIncludes> 
         <bindingIncludes> 
          <include>path/to/your/custom-bindings.xjb</include> <!-- if you choose to use a custom bindings file instead of inline annotations in the xsd --> 
         </bindingIncludes> 
         <forceRegenerate>true</forceRegenerate> 
         <extension>true</extension> 
         <episode>false</episode> 
         <args> 
          <arg>-Xannotate</arg> 
         </args> 
         <plugins> 
          <plugin> 
           <groupId>org.jvnet.jaxb2_commons</groupId> 
           <artifactId>jaxb2-basics-annotate</artifactId> 
           <version>0.6.4</version> 
          </plugin> 
         </plugins> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

을 위의 플러그인이 정확하게 당신이 원하는 것을하지 않는 경우 (이 I 그것이 꽤 유연해야한다고 생각합니다.) 자신의 수정을 롤하는 것이 너무 어려워서는 안됩니다 (생성 된 클래스에 복사 생성자를 추가하기 전에이 작업을 수행했습니다).