xml 문자열 과 자바 빈 의 상호 전환

5732 단어 springboot
최근 에 데 이 터 를 연결 하면 되 돌아 오 는 데이터 형식 은 자줏빛 입 니 다.

    
        
        
        
    

그 때 는 정말 눈물 을 흘 리 고 싶 었 어 요. 이 걸 어떻게 만 들 었 어 요? 가끔 못 해 요 ~ ~
하지만 월급 을 위해 목숨 을 걸 었 다!
저 는 javax 테이프 의 주 해 를 사 용 했 습 니 다. 쓰기 좋 은 것 같 습 니 다. 간단 하고 편리 합 니 다. 왜 처음에는 잘 못 봤 는 지 모 르 겠 습 니 다 ~
먼저 인터넷 에서 찾 아 보고 도구 류 를 썼 습 니 다.

import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

/**
 * 
 * Class Name: XmlConvertUtil  
 * Description: xml       
 *
 */
public class XmlConvertUtil {
	/**
     * xml   JavaBean
     *
     * @param xml xml     
     * @param t       
     * @return       
     * @throws Exception JAXBException
     */
    @SuppressWarnings({ "unchecked" })
	public static  T convertToJavaBean(String xml, Class t) throws Exception {
        T obj = null;
        JAXBContext context = JAXBContext.newInstance(t);
        Unmarshaller unmarshaller = context.createUnmarshaller();
        obj = (T) unmarshaller.unmarshal(new StringReader(xml));
        return obj;
    }
    
    /** 
     * JavaBean   xml 
     * @param obj 
     * @param encoding  
     * @return  
     */  
    public static String convertToXml(Object obj, String encoding) {  
        String result = null;  
        try {  
            JAXBContext context = JAXBContext.newInstance(obj.getClass());  
            Marshaller marshaller = context.createMarshaller();  
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);  
            marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);  
  
            StringWriter writer = new StringWriter();  
            marshaller.marshal(obj, writer);  
            result = writer.toString();  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
  
        return result;  
    }  
    
}

그 다음 에 대응 하 는 실체 류 입 니 다. 여기 서 저 는 마음 이 불편 한 곳 이 있 습 니 다. 여기 xml 은 3 층 으로 되 어 있 습 니 다. 저도 3 개의 실체 류 를 써 서 대응 해 야 합 니 다 ~ ~ ~
1. 층:
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "oa")    //       
public class RequestEntity {
  
	@XmlElement  //    ,        @XmlAttribute
    protected RequestBody informations; //      
    
	public RequestBody getInformations() {
		return informations;
	}
	
	public void setInformations(RequestBody informations) {
		this.informations = informations;
	}
    
    
}

2. 층:

import java.util.List;

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

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "informations")
public class  RequestBody{
	@XmlElement(name="information") //        name    
	public List information; //    

	public List getInformation() {
		return information;
	}

	public void setInformation(List information) {
		this.information = information;
	}

}

3. 층, 즉 얻 고자 하 는 실체:
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;

import com.ly.cloud.news.po.NewsData;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "information")
public class NewsDataXMLVO {

        @XmlAttribute
        private String id;
        @XmlAttribute
        private String title;
        @XmlAttribute
        private String time;
        
        public String getId() {
			return id;
		}
		public void setId(String id) {
			this.id = id;
		}
		public String getTitle() {
			return title;
		}
		public void setTitle(String title) {
			this.title = title;
		}
		
}

그리고 호출 할 수 있 습 니 다.
public static void main(String[] args) throws ClientProtocolException, IOException {
		try {
			/////////////////////// xml   JavaBean  ///////////////////////////
			RequestEntity entity = convertToJavaBean(getNewsByTagId("ff80808105cda730010"),RequestEntity.class);
			RequestBody body = entity.getInformations();
			List xmlVo = body.getInformation();
			for (NewsDataXMLVO newsDataXMLVO : xmlVo) {
				System.out.println(newsDataXMLVO.getId() + " " + newsDataXMLVO.getTitle());
			}
			//////////////////////// xml   JavaBean  ///////////////////////////
			
			/////////////////////// JavaBean   xml  ////////////////////////////
			RequestBody body2 = new RequestBody();
			body2.setInformation(xmlVo);
			RequestEntity entity2 = new RequestEntity();
			entity2.setInformations(body2);
			String xml = convertToXml(entity2, "utf-8");
			System.out.println("xml:" + xml);
			/////////////////////// JavaBean   xml  ///////////////////////////
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}

ps: getNewsByTagId ("ff808105cda 730010") 는 원 격 으로 연결 하 는 방법 입 니 다. xml 형식의 String 문자열 을 되 돌려 줍 니 다.

좋은 웹페이지 즐겨찾기