[SPRING] Java 객체에 XML 엔티티 매핑하기
SPRINGJava 객체에 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.다음은 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.기본적으로 XML을 언 마샬하고 싶습니다. 다음은 JAXB xjc 명령을 사용하여 XML 스키마에서 Java 클래스를 생성하는 방법을 설명하는 자세한 자습서입니다. 사용자의 편의를 위해 maven xjc 플러그인을 사용할 수도 있습니다.
기본적으로 XML을 언 마샬하고 싶습니다. 다음은 JAXB xjc 명령을 사용하여 XML 스키마에서 Java 클래스를 생성하는 방법을 설명하는 자세한 자습서입니다. 사용자의 편의를 위해 maven xjc 플러그인을 사용할 수도 있습니다.
from https://stackoverflow.com/questions/15881876/mapping-xml-entities-to-java-objects by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 필수 MultipartFile 매개 변수 'file'이 (가) spring mvc에 없습니다. (0) | 2019.02.13 |
---|---|
[SPRING] <context : property-placeholder> 자식 (웹) 컨텍스트에 액세스 할 수없는 속성 (0) | 2019.02.13 |
[SPRING] Mongo가 자동으로 포트 27017 (로컬 호스트)에 연결하려고 시도합니다. (0) | 2019.02.13 |
[SPRING] 스프링 보안 - 애플리케이션 컨텍스트에서 WebSecurityExpressionHandler 인스턴스를 찾을 수 없음 (0) | 2019.02.13 |
[SPRING] 순환 뷰 경로 오류 봄 부팅 (0) | 2019.02.13 |