35장. 복잡한 유형 사용


초록

복잡한 형식은 여러 요소를 포함할 수 있으며 특성을 가질 수 있습니다.Complex types can contain multiple elements and they can have attributes. 이는 유형 정의로 표시되는 데이터를 저장할 수 있는 Java 클래스에 매핑됩니다. 일반적으로 매핑은 콘텐츠 모델의 요소 및 특성을 나타내는 속성 집합을 사용하여 8080에 연결됩니다.

35.1. 기본 복잡한 유형 매핑

35.1.1. 개요

XML 스키마 복잡한 유형은 간단한 유형보다 더 복잡한 정보를 포함하는 구성을 정의합니다. 가장 간단한 복잡한 유형은 속성이 있는 빈 요소를 정의합니다. 보다 복잡한 유형은 요소의 컬렉션으로 구성됩니다.

기본적으로 XML 스키마 복잡한 유형은 Java 클래스에 매핑되며, 멤버 변수는 XML 스키마 정의에 나열된 각 요소 및 속성을 나타냅니다. 클래스에는 각 멤버 변수에 대한 setter 및 get zone이 있습니다.

35.1.2. XML 스키마로 정의

XML 스키마 복잡한 유형은 complexType 요소를 사용하여 정의됩니다. complexType 요소는 데이터의 구조를 정의하는 데 사용되는 나머지 요소를 래핑합니다. 이름이 지정된 형식 정의의 부모 요소 또는 요소에 저장된 정보의 구조를 정의하는 요소 요소의 자식으로 나타날 수 있습니다. complexType 요소가 명명된 유형을 정의하는 데 사용되는 경우 name 특성을 사용해야 합니다. name 속성은 유형을 참조하는 데 필요한 고유 식별자를 지정합니다.

하나 이상의 요소를 포함하는 복잡한 유형 정의에는 표 35.1. “복잡한 유형에서 발생하는 방법 정의의 요소” 에 설명된 하위 요소 중 하나가 있습니다. 이러한 요소는 지정된 요소가 유형의 인스턴스에 표시되는 방식을 결정합니다.

표 35.1. 복잡한 유형에서 발생하는 방법 정의의 요소
element설명

all

복잡한 형식의 일부로 정의된 모든 요소가 형식의 인스턴스에 표시되어야 합니다. 그러나 어떤 순서로든 나타날 수 있습니다.

선택

복잡한 형식의 일부로 정의된 요소 중 하나만 형식 인스턴스에 표시될 수 있습니다.

순서

복잡한 형식의 일부로 정의된 모든 요소는 형식의 인스턴스에 표시되어야 하며 형식 정의에 지정된 순서로도 표시되어야 합니다.

참고

복잡한 유형 정의에서 특성만 사용하는 경우 표 35.1. “복잡한 유형에서 발생하는 방법 정의의 요소” 에 설명된 요소 중 하나가 필요하지 않습니다.

요소가 표시되는 방식을 결정한 후 하나 이상의 요소 요소 하위 요소를 정의에 추가하여 요소를 정의합니다.

예 35.1. “XML 스키마 복잡성 유형” XML 스키마로 복잡한 유형 정의를 보여줍니다.

예 35.1. XML 스키마 복잡성 유형

<complexType name="sequence">
  <sequence>
    <element name="name" type="xsd:string" />
    <element name="street" type="xsd:short" />
    <element name="city" type="xsd:string" />
    <element name="state" type="xsd:string" />
    <element name="zipCode" type="xsd:string" />
  </sequence>
</complexType>
Copy to Clipboard

35.1.3. Java에 매핑

XML 스키마 복잡한 유형은 Java 클래스에 매핑됩니다. 복잡한 유형 정의의 각 요소는 Java 클래스의 멤버 변수에 매핑됩니다. 복잡한 유형의 각 요소에 대해 getter 및 setter 메서드도 생성됩니다.

생성된 모든 Java 클래스는 @ CryostatType 주석으로 데코레이팅됩니다. 이름이 지정된 복합 유형에 대한 매핑인 경우 주석 이름은 complexType 요소의 name 속성 값으로 설정됩니다. 복잡한 유형이 요소 정의의 일부로 정의된 경우 @ CryostatType 주석의 name 속성 값은 요소 요소의 name 속성 값입니다.

참고

“인라인 유형으로 요소의 Java 매핑” 에 설명된 대로, 요소 정의의 일부로 정의된 복잡한 유형에 대해 생성되는 경우 생성된 클래스는 @ CryostatRoot >-< 주석으로 분류됩니다.

런타임에 XML 스키마 복잡한 유형의 요소를 처리하는 방법을 나타내는 지침을 제공하기 위해 코드 생성기는 클래스와 해당 멤버 변수를 해독하는 데 사용되는 주석을 변경합니다.

모든 복잡한 유형

모든 복잡한 유형은 all 요소를 사용하여 정의됩니다. 여기에는 다음과 같이 주석이 있습니다.

  • @ CryostatType 주석의 propOrder 속성이 비어 있습니다.
  • 각 요소는 @ Cryostat 주석으로 데코레이팅됩니다.
  • @ Cryostat&gt;-< 주석의 필수 속성은 true 로 설정됩니다.

    예 35.2. “모든 복잡한 유형의 매핑” 두 개의 요소가 있는 모든 복잡한 형식에 대한 매핑을 표시합니다.

    예 35.2. 모든 복잡한 유형의 매핑

    @XmlType(name = "all", propOrder = {
    
    })
    public class All {
        @XmlElement(required = true)
        protected BigDecimal amount;
        @XmlElement(required = true)
        protected String type;
    
        public BigDecimal getAmount() {
            return amount;
        }
    
        public void setAmount(BigDecimal value) {
            this.amount = value;
        }
    
        public String getType() {
            return type;
        }
    
        public void setType(String value) {
            this.type = value;
        }
    }
    Copy to Clipboard
복잡한 유형 선택

선택 복잡한 유형은 choice 요소를 사용하여 정의됩니다. 여기에는 다음과 같이 주석이 있습니다.

  • @ CryostatType 주석의 propOrder 속성은 요소의 이름이 XML 스키마 정의에 표시되는 순서대로 나열됩니다.
  • 멤버 변수에는 주석이 없습니다.

    예 35.3. “선택 복잡한 유형 매핑” 두 개의 요소가 포함된 선택한 복잡한 형식에 대한 매핑을 표시합니다.

    예 35.3. 선택 복잡한 유형 매핑

    @XmlType(name = "choice", propOrder = {
        "address",
        "floater"
    })
    public class Choice {
    
        protected Sequence address;
        protected Float floater;
    
        public Sequence getAddress() {
            return address;
        }
    
        public void setAddress(Sequence value) {
            this.address = value;
        }
    
        public Float getFloater() {
            return floater;
        }
    
        public void setFloater(Float value) {
            this.floater = value;
        }
    
    }
    Copy to Clipboard
시퀀스 복잡한 유형

시퀀스 복합 형식은 시퀀스 요소를 사용하여 정의됩니다.A sequence complex type is defined using the sequence element. 여기에는 다음과 같이 주석이 추가됩니다.

  • @ CryostatType 주석의 propOrder 속성은 요소의 이름이 XML 스키마 정의에 표시되는 순서대로 나열됩니다.
  • 각 요소는 @ Cryostat 주석으로 데코레이팅됩니다.
  • @ Cryostat&gt;-< 주석의 필수 속성은 true 로 설정됩니다.

    예 35.4. “시퀀스 복잡한 유형의 매핑” 예 35.1. “XML 스키마 복잡성 유형” 에 정의된 복잡한 유형의 매핑을 보여줍니다.

    예 35.4. 시퀀스 복잡한 유형의 매핑

    @XmlType(name = "sequence", propOrder = {
        "name",
        "street",
        "city",
        "state",
        "zipCode"
    })
    public class Sequence {
    
        @XmlElement(required = true)
        protected String name;
        protected short street;
        @XmlElement(required = true)
        protected String city;
        @XmlElement(required = true)
        protected String state;
        @XmlElement(required = true)
        protected String zipCode;
    
        public String getName() {
            return name;
        }
    
        public void setName(String value) {
            this.name = value;
        }
    
        public short getStreet() {
            return street;
        }
    
        public void setStreet(short value) {
            this.street = value;
        }
    
        public String getCity() {
            return city;
        }
    
        public void setCity(String value) {
            this.city = value;
        }
    
        public String getState() {
            return state;
        }
    
        public void setState(String value) {
            this.state = value;
        }
    
        public String getZipCode() {
            return zipCode;
        }
    
        public void setZipCode(String value) {
            this.zipCode = value;
        }
    }
    Copy to Clipboard
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat