JAXB解析xml到实体类

xml : 简单案例

<Document>
    <PRH>
        <PA01>
            <PA01A>
                <PA01AI01>2019112716295473566552</PA01AI01>
                <PA01AR01>2019-11-27T16:29:54</PA01AR01>
            </PA01A>
            <PA01B>
                <PA01BQ01>XXX</PA01BQ01>
                <PA01BD01>10</PA01BD01>
                <PA01BI01>622926198501293785</PA01BI01>
                <PA01BI02>G10151210H0001</PA01BI02>
                <PA01BD02>02</PA01BD02>
            </PA01B>
            <PA01E>
                <PA01ES01>2</PA01ES01>
            </PA01E>
        </PA01>
    </PRH>
</Document>

BizAnalyUtil

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

@Slf4j
public class BizAnalyUtil {
	
	private static JAXBContext context = null;
	static {
		try {
			context = JAXBContext.newInstance(ReportMessageV2.class);
		} catch (JAXBException e) {
			log.error("JAXBContext.newInstance-error : {} . ", e);
		}
	}
	
	public static ReportMessageV2 analy(String reqId, String msg) throws AnalyException{
	    ReportMessageV2 jsonRootBean = null;
		try {
		        Unmarshaller unmarshaller = context.createUnmarshaller();
		        jsonRootBean = (ReportMessageV2) unmarshaller.unmarshal(new StringReader(msg));
			return jsonRootBean;
		}catch (Exception e) {
			log.error("{} . ", e);
		}
		// json解析
		//if(msg.contains("Document")) {
			//JSONObject jsonObject = JSONObject.parseObject(msg);
			//msg = jsonObject.getString("Document");
		//}
		//jsonRootBean = JSON.parseObject(msg, ReportMessageV2.class);
	}
}

ReportMessageV2 : 简单案例

package com.fintell.dp3.biz.entity.v2;

import java.io.Serializable;

import javax.xml.bind.annotation.XmlRootElement;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

@SuppressWarnings("serial")
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
// 指定解析节点
@XmlRootElement(name = "Document")
public class ReportMessageV2 implements Serializable{
	private PRH PRH;
	private PIM PIM;
}
发布了67 篇原创文章 · 获赞 10 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_17522211/article/details/105617250