3
jaxb
및 xsdtojava
에 의해 자동 생성 된 클래스에 수퍼 interface
을 추가하고 싶습니다.xsdtojava를 사용하여 자동 생성 된 jaxb 요소에 인터페이스를 추가하는 방법은 무엇입니까?
문제점 : 루트 요소에만 인터페이스를 추가 할 수 있습니다 (테스트를 목적으로하지 않습니다).
상속을 적용하려는 요소는 thelistelement
입니다.
xsd
나는 통제 할 수 없습니다.
<xs:schema>
<xs:element name="myRequest">
<xs:complexType>
<xs:sequence>
<xs:element name="thelist">
<xs:complexType>
<xs:sequence>
<xs:element name="thelistelement" maxOccurs="unbounded">
...
바인딩 파일 :
<jaxb:bindings
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:inheritance="http://jaxb2-commons.dev.java.net/basic/inheritance"
jaxb:extensionBindingPrefixes="xjc inheritance"
jaxb:version="2.1">
<!-- this works -->
<jaxb:bindings schemaLocation="xsd/my.xsd">
<jaxb:bindings node="//xs:element[@name='myRequest']">
<inheritance:implements>MyInterface</inheritance:implements>
</jaxb:bindings>
</jaxb:bindings>
<!-- this does NOT work -->
<jaxb:bindings schemaLocation="xsd/my.xsd">
<jaxb:bindings node="//xs:element[@name='thelistelement']">
<inheritance:implements>MyInterface</inheritance:implements>
</jaxb:bindings>
</jaxb:bindings>
</jaxb:bindings>
가
<extensionArg>-Xinheritance</extensionArg>
으로 실행합니다.
출력은 다음과 같아야합니다
...
List<Thelistelement> thelist;
class Thelistelement implements MyInterface {
}
하지만 인터페이스는 목록 요소의 클래스가 없습니다. 그렇다면 왜 루트 요소 myRequest
에서 작동합니까?