JAXB를 사용하여 xml 문자열을 Java 객체로 언마샬링하는 방법

6502 단어 javaxmljaxbcodever
다음Superhero 클래스가 주어집니다.

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

import lombok.Getter;
import lombok.Setter;

@XmlRootElement(name = "super-hero")
@XmlAccessorType(XmlAccessType.FIELD)
@Getter
@Setter
class SuperHero {
  @XmlElement(name = "name")
  String name;

  @XmlElement(name = "super-power")
  String superPower;
}


다음 코드를 사용하여 XML 문자열을 SuperHero 인스턴스로 변환할 수 있습니다.

import static org.junit.jupiter.api.Assertions.assertEquals;

import java.io.StringReader;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;

import org.junit.jupiter.api.Test;
import org.junit.platform.runner.JUnitPlatform;
import org.junit.runner.RunWith;

@RunWith(JUnitPlatform.class)
class TestXmlStringToObjectUnmarshalling {

  static final String superHeroXml =
      "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"
          + "<super-hero>"
          + "  <name>Superman</name>"
          + "  <super-power>Flight</super-power>"
          + "</super-hero>";

  @Test
  void testXmlUnmarshalling() throws JAXBException {
    JAXBContext jaxbContext = JAXBContext.newInstance(SuperHero.class);
    Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();

    StringReader reader = new StringReader(superHeroXml);
    SuperHero superHero = (SuperHero) unmarshaller.unmarshal(reader);

    assertEquals("Flight", superHero.getSuperPower());
  }
}



메모:
  • JAXBContext 클래스를 포함하는 SuperHero 생성 - JAXBContext.newInstance(SuperHero.class)
  • JAXBUnmarshaller를 생성하고 unmarshal 메서드를 텍스트 래핑StringReader에 적용합니다(해당 문제에 대해 FileReader 또는 기타Reader일 수도 있음)



  • Shared with ❤️ from Codever. Use 👉 copy to mine functionality to add it to your personal snippets collection.

    좋은 웹페이지 즐겨찾기