JAXB 자바 빈 과 xml 의 상호 전환 실현 (2) - 패키지
6745 단어 J2EE
1. xmlToObject 와 objectToXml 방법 으로 패키지
상세 설명 은 코드 주석 참조
package com.jaxb;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
/**
* JAXB,xml object
*
*/
public class JAXB {
// /**
// * xml bean( )
// * @param xml
// * @return
// * @throws JAXBException
// */
// public static Student xmlToBean(String xml) throws JAXBException{
// // JAXBContext , Student.class, JAXBContext Student
// JAXBContext jaxbContext = JAXBContext.newInstance(Student.class);
// // Unmarshaller , xml java
// Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
// //
// InputStream inputStream = new ByteArrayInputStream(xml.getBytes());
// // inputStream, java
// Student student = (Student) unmarshaller.unmarshal(inputStream);
// return student;
// }
/**
* xmlToObject
* @param T, , , , 。
* @param objectClass
* @param xml
* @return T
* @throws JAXBException
*/
@SuppressWarnings("unchecked")
public static T xmlToObject(Class objectClass,String xml) throws JAXBException{
InputStream inputStream = null;
Unmarshaller unmarshaller = null;
JAXBContext jaxbContext = null;
// JAXBContext , JAXBContext objectClass new class[] objectClass.getClass()
jaxbContext = JAXBContext.newInstance(objectClass);
// Unmarshaller , xml java
unmarshaller = jaxbContext.createUnmarshaller();
//
inputStream = new ByteArrayInputStream(xml.getBytes());
// ( close() )
if(inputStream != null){
try
{
//
inputStream.close();
}
catch(IOException e)
{
e.printStackTrace();
}
}
// inputStream,
return (T)unmarshaller.unmarshal(inputStream);
}
/**
* objectToXml
* @param object
* @param format
* @return string
* @throws JAXBException
*/
@SuppressWarnings("unchecked")
public static T objectToXml(Object object, boolean format) throws JAXBException
{
String xml;
Marshaller marshaller = null;
JAXBContext jaxbContext = null;
ByteArrayOutputStream baos = null;
jaxbContext = JAXBContext.newInstance(object.getClass());
marshaller = jaxbContext.createMarshaller();
// ( )
marshaller.setProperty("jaxb.encoding", "UTF-8");
// ,System.getProperty("file.encoding") ( main java )
//marshaller.setProperty("jaxb.encoding", System.getProperty("file.encoding"));
// xml
marshaller.setProperty("jaxb.formatted.output", format);
baos = new ByteArrayOutputStream();
// object baos( )
marshaller.marshal(object, baos);
// string
xml = baos.toString();
if(baos != null){
try
{
baos.close();
}
catch(IOException e)
{
e.printStackTrace();
}
}
return (T)xml;
}
}
2. 인 스 턴 스 - object
변환 할 object - Student 실체:
package com.jaxb;
import java.io.Serializable;
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 javax.xml.bind.annotation.XmlTransient;
/**
* @XmlAccessorType(XmlAccessType.FIELD): 、 XML, XmlTransient 。
* @XmlRootElement:xml
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "student")
public class Student implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
// XML
@XmlElement
private String id;
@XmlElement
private String name;
@XmlTransient
private String country;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
}
@ XmlAccessorType (XmlAccessType. FIELD) 매 거 진 상수 요약
FIELD
JAXB 바 인 딩 클래스 의 모든 비 정적, 비 과도 필드 는 XmlTransient 주석 이 없 는 한 XML 에 자동 으로 바 인 딩 됩 니 다.NONE
일부 JAXB 주석 을 사용 하지 않 는 한 모든 필드 나 속성 을 XML 에 연결 할 수 없습니다.PROPERTY
JAXB 바 인 딩 클래스 의 모든 획득 방법 / 설정 방법 은 XmlTransient 주석 이 없 는 한 XML 에 자동 으로 바 인 딩 됩 니 다.PUBLIC_MEMBER
모든 공공 획득 방법 / 설정 방법 은 XmlTransient 주석 이 없 는 한 모든 공공 필드 와 자동 으로 XML 로 연 결 됩 니 다.3. 실례 - main
먼저 xml 를 object 로 바 꾼 다음 object 를 xml 로 바 꿉 니 다.
package com.jaxb;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
public class JaxbMain {
public static void main(String[] args) throws JAXBException {
//xml
String xml = "001 AKK ";
//xmlToObject
Student student = (Student) JAXB.xmlToObject(Student.class, xml);
System.out.println(student.getName());
xml = null;
//objectToXml
xml = JAXB.objectToXml(student, true);
System.out.println(xml);
}
}
4. 실행 - 출력 결과
AKK
001
AKK
전체적으로 보면 패 키 징 은 어렵 지 않 습 니 다. 업무 와 관련 된 매개 변수 와 반환 값 을 추상 화 하 는 것 입 니 다. 보통 일반적인 사용 은 팬 형 을 통 해 이 루어 집 니 다. 마치 우리 JAXB 의 전환 방법 과 같 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[상단] j2ee 규범 - EJBJ2EE가 이 문제에 대한 처리 방법은 업무 논리를 클라이언트 소프트웨어에서 추출하여 한 그룹에 봉인하는 것이다 부품 중.이 구성 요소는 하나의 독립된 서버에서 실행되며, 클라이언트 소프트웨어는 네트워크를 통해 구성...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.