38.6. Element 또는 Attribute의 기본 유형 지정


38.6.1. 개요

경우에 따라 요소에 대해 생성된 개체의 클래스를 사용자 지정하거나 XML 스키마 복잡한 유형의 일부로 정의된 특성을 사용자 지정해야 합니다. 예를 들어 간단한 형식 대체를 허용하도록 보다 일반적인 개체 클래스를 사용할 수 있습니다.For example, you might want to use a more generalized class of object to allow for simple type substitution.

이를 수행하는 한 가지 방법은 JAXB 기본 유형 사용자 지정을 사용하는 것입니다. 경우에 따라 개발자가 요소 또는 특성을 나타내기 위해 생성된 오브젝트의 클래스를 지정할 수 있습니다. 기본 유형 사용자 지정을 사용하면 XML 스키마 구문과 생성된 Java 오브젝트 간의 대체 매핑을 지정할 수 있습니다. 이 대체 매핑은 간단한 전문 분야 또는 기본 기본 클래스의 일반화일 수 있습니다. XML 스키마 기본 유형을 Java 클래스에 매핑할 수도 있습니다.

38.6.2. 사용자 정의 사용

XML 스키마 구문에 JAXB 기본 유형 속성을 적용하려면 JAXB baseType 사용자 지정 요소를 사용합니다. baseType 사용자 지정 요소는 JAXB 속성 요소의 자식이므로 적절히 중첩해야 합니다.

XML 스키마 구문의 매핑을 Java 오브젝트에 사용자 지정하는 방법에 따라 baseType 사용자 지정 요소의 name 속성 또는 javaType 하위 요소를 추가합니다. name 특성은 생성된 오브젝트의 기본 클래스를 동일한 클래스 계층 구조 내의 다른 클래스에 매핑하는 데 사용됩니다. javaType 요소는 XML 스키마 기본 유형을 Java 클래스에 매핑하려는 경우 사용됩니다.

중요

동일한 baseType 사용자 지정 요소에서 name 특성과 javaType 하위 요소를 둘 다 사용할 수 없습니다.

38.6.3. 기본 매핑 특수화 또는 일반화

baseType 사용자 지정 요소의 name 특성은 동일한 Java 클래스 계층 구조 내의 클래스에 생성된 개체의 클래스를 재정의하는 데 사용됩니다. 속성은 XML Schema 구문을 매핑할 Java 클래스의 정규화된 이름을 지정합니다. 지정된 Java 클래스는 코드 생성기가 일반적으로 XML Schema 구문에 대해 생성하는 Java 클래스의 슈퍼 클래스 또는 하위 클래스 여야 합니다. Java 기본 유형에 매핑되는 XML 스키마 기본 형식의 경우 래퍼 클래스는 사용자 지정을 위해 기본 기본 클래스로 사용됩니다.

예를 들어 xsd:int 로 정의된 요소는 java.lang.Integer 를 기본 기본 클래스로 사용합니다. name 특성의 값은 Number 또는 Object 와 같은 Integer 의 모든 슈퍼 클래스를 지정할 수 있습니다.

간단한 유형 대체의 경우 가장 일반적인 사용자 지정은 기본 유형을 Object 오브젝트에 매핑하는 것입니다.

예 38.27. “기본 유형의 인라인 사용자 지정” 복잡한 유형의 한 요소를 Java Object 오브젝트에 매핑하는 인라인 사용자 지정을 보여줍니다.

예 38.27. 기본 유형의 인라인 사용자 지정

<complexType name="widgetOrderInfo">
  <all>
    <element name="amount" type="xsd:int" />
     <element name="shippingAdress" type="Address">
      <annotation> <appinfo> <jaxb:property> <jaxb:baseType name="java.lang.Object" /> </jaxb:property> </appinfo> </annotation>
    </element>
    <element name="type" type="xsd:string"/>
  </all>
</complexType>

예 38.28. “기본 유형 사용자 지정을 위한 외부 바인딩 파일”예 38.27. “기본 유형의 인라인 사용자 지정” 에 표시된 사용자 지정의 외부 바인딩 파일을 표시합니다.

예 38.28. 기본 유형 사용자 지정을 위한 외부 바인딩 파일

<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
               xmlns:xsd="http://www.w3.org/2001/XMLSchema"
               jaxb:version="2.0">
  <jaxb:bindings schemaLocation="enumMap.xsd">
    <jaxb:bindings node="xsd:ComplexType[@name='widgetOrderInfo']">
      <jaxb:bindings node="xsd:element[@name='shippingAddress']">
        <jaxb:property>
          <jaxb:baseType name="java.lang.Object" />
        </jaxb:property>
      </jaxb:bindings>
    </jaxb:bindings>
  </jaxb:bindings>
<jaxb:bindings>

결과 Java 오브젝트의 @XmlElement 주석에는 type 속성이 포함됩니다. type 속성의 값은 생성된 개체의 기본 유형을 나타내는 클래스 오브젝트입니다. XML 스키마 기본 형식의 경우 클래스는 해당 Java 기본 유형의 래퍼 클래스입니다.

예 38.29. “수정 기본 클래스가 있는 Java 클래스” 예 38.28. “기본 유형 사용자 지정을 위한 외부 바인딩 파일” 의 스키마 정의에 따라 생성된 클래스를 보여줍니다.

예 38.29. 수정 기본 클래스가 있는 Java 클래스

public class WidgetOrderInfo {

    protected int amount;
    @XmlElement(required = true)
    protected String type;
    @XmlElement(required = true, type = Address.class) protected Object shippingAddress;

    ...
    public Object getShippingAddress() {
        return shippingAddress;
    }

    public void setShippingAddress(Object value) {
        this.shippingAddress = value;
    }

}

38.6.4. javaType 사용

javaType 요소는 XML 스키마 기본 유형을 사용하여 정의된 요소 및 특성이 Java 개체에 매핑되는 방법을 사용자 지정하는 데 사용할 수 있습니다. javaType 요소를 사용하면 baseType 요소의 name 속성을 사용하는 것보다 훨씬 더 유연하게 사용할 수 있습니다. javaType 요소를 사용하면 기본 유형을 오브젝트의 모든 클래스에 매핑할 수 있습니다.

javaType 요소 사용에 대한 자세한 설명은 38.2절. “XML 스키마의 Java 클래스 지정” 을 참조하십시오.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.