복붙노트

[SPRING] Java 객체에 XML 엔티티 매핑하기

SPRING

Java 객체에 XML 엔티티 매핑하기

나는 이것이 XML에서 자바 객체로의 변환에 관한 많은 중복 된 질문 중 하나라고 확신한다. 그러나 나는 더 간단하게 찾을 수 없거나 더 간단한 해결책을 찾지 못해이 글을 시작했다.

내가 xsd [Infact 내가 그것을 설계하고있다] 및 XML 있습니다. 매핑 당 Java bean에 xml 데이터를 자동 매핑하고 싶습니다.

<tns:SummaryCart xmlns:tns="SummaryCart" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="SummaryCart.xsd">
    <SummaryElement type="test">
        <order>1</order>
        <id>A</id>
        <displayName>A</displayName>
        <subElements>
            <order>1</order>
            <id>Preactivation</id>
            <displayName>Preactivation</displayName>
        </subElements>
        <maxlines>1</maxlines>
    </SummaryElement>
</tns:SummaryCart>

이제 Java 클래스가 될 것입니다.

public class SummaryCart{
    private List<SummaryElement> summaryElementList;
}
public class SummaryElement {
    private int order;
    private String id;
    private String displayName;
    private String property;
    private List<SummaryElement> subElements;
    private int maxlines;
    private String type;
}

XML에서 Java bean으로 데이터를 자동 매핑 할 수있는 간단한 도구 / 프레임 워크가 있어야합니다 [반드시 속성 / 요소 매핑을 지원해야합니다]. 튜토리얼은 좋을 것이다.

Btw, Spring-Oxm 장점을 사용한다면 Spring 프레임 워크를 사용하고 있습니다. 환영합니다.

해결법

  1. ==============================

    1.다음은 JAXB (JSR-222)를 사용하여 객체를 XML로 매핑하는 방법입니다. 구현은 Java SE 6부터 JDK / JRE에 포함됩니다. JAXB는 Spring에서 지원됩니다 (8.5 절 : http://static.springsource.org/spring-ws/site/reference/html/oxm.html 참조).

    다음은 JAXB (JSR-222)를 사용하여 객체를 XML로 매핑하는 방법입니다. 구현은 Java SE 6부터 JDK / JRE에 포함됩니다. JAXB는 Spring에서 지원됩니다 (8.5 절 : http://static.springsource.org/spring-ws/site/reference/html/oxm.html 참조).

    SummaryCart

    import java.util.List;
    import javax.xml.bind.annotation.*;
    
    @XmlRootElement(name="SummaryCart", namespace="SummaryCart")
    @XmlAccessorType(XmlAccessType.FIELD)
    public class SummaryCart{
    
        @XmlElement(name="SummaryElement")
        private List<SummaryElement> summaryElementList;
    
    }
    

    SummaryElement

    import java.util.List;
    import javax.xml.bind.annotation.*;
    
    @XmlAccessorType(XmlAccessType.FIELD)
    public class SummaryElement {
    
        private int order;
        private String id;
        private String displayName;
        private String property;
        private List<SummaryElement> subElements;
        private int maxlines;
    
        @XmlAttribute
        private String type;
    
    }
    

    데모

    import java.io.File;
    import javax.xml.bind.*;
    
    public class Demo {
    
        public static void main(String[] args) throws Exception {
            JAXBContext jc = JAXBContext.newInstance(SummaryCart.class);
    
            Unmarshaller unmarshaller = jc.createUnmarshaller();
            File xml = new File("src/forum15881876/input.xml");
            SummaryCart sc = (SummaryCart) unmarshaller.unmarshal(xml);
    
            Marshaller marshaller = jc.createMarshaller();
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
            marshaller.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, "SummaryCart.xsd");
            marshaller.marshal(sc, System.out);
        }
    
    }
    

    input.xml / Output

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ns2:SummaryCart xmlns:ns2="SummaryCart" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="SummaryCart.xsd">
        <SummaryElement type="test">
            <order>1</order>
            <id>A</id>
            <displayName>A</displayName>
            <subElements>
                <order>1</order>
                <id>Preactivation</id>
                <displayName>Preactivation</displayName>
                <maxlines>0</maxlines>
            </subElements>
            <maxlines>1</maxlines>
        </SummaryElement>
    </ns2:SummaryCart>
    
  2. ==============================

    2.기본적으로 XML을 언 마샬하고 싶습니다. 다음은 JAXB xjc 명령을 사용하여 XML 스키마에서 Java 클래스를 생성하는 방법을 설명하는 자세한 자습서입니다. 사용자의 편의를 위해 maven xjc 플러그인을 사용할 수도 있습니다.

    기본적으로 XML을 언 마샬하고 싶습니다. 다음은 JAXB xjc 명령을 사용하여 XML 스키마에서 Java 클래스를 생성하는 방법을 설명하는 자세한 자습서입니다. 사용자의 편의를 위해 maven xjc 플러그인을 사용할 수도 있습니다.

  3. from https://stackoverflow.com/questions/15881876/mapping-xml-entities-to-java-objects by cc-by-sa and MIT license