XmlUtil



import java.io.StringReader;
import java.io.StringWriter;

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

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;



public class XmlUtil {

private static final Logger logger = LoggerFactory.getLogger(XmlUtil.class);


/**
* java对象转换为xml文件
*
* @param xmlPath xml文件路径
* @param clazz java对象.Class
* @return xml文件的String
* @throws JAXBException
*/
public static String beanToXml(Object obj, Class<?> clazz) throws JAXBException {
JAXBContext context = JAXBContext.newInstance(clazz);
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, false);
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
StringWriter writer = new StringWriter();
marshaller.marshal(obj, writer);
return writer.toString();
}

/**
* xml文件配置转换为对象
*
* @param xmlPath xml文件路径
* @param clazz java对象.Class
* @return java对象
* @throws JAXBException
*/
@SuppressWarnings("unchecked")
public static <T> T xmlToBean(String xmlPath, Class<T> clazz) throws Exception {
logger.info("xmlToBean xmlPath {} clazz {}", xmlPath, clazz);
JAXBContext context = JAXBContext.newInstance(clazz);
Unmarshaller unmarshaller = context.createUnmarshaller();
return (T) unmarshaller.unmarshal(new StringReader(xmlPath));
}

/**
* xml转换成JavaBean
*
* @param xml
* @param clazz
* @return
*/
@SuppressWarnings("unchecked")
public static <T> T convertToJavaBean(String xml, Class<T> clazz) {
logger.info("convertToJavaBean xml {} clazz {}", xml, clazz);
T t = null;
try {
JAXBContext context = JAXBContext.newInstance(clazz);
Unmarshaller unmarshaller = context.createUnmarshaller();
t = (T) unmarshaller.unmarshal(new StringReader(xml));
} catch (Exception e) {
logger.error("convertToJavaBean exception {}", e.getMessage());
}

return t;
}

/**
* JavaBean转换成xml
* 默认编码UTF-8
*
* @param obj
* @param writer
* @return
*/
public static String convertToXml(Object obj) {
return convertToXml(obj, "UTF-8");
}

/**
* 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());
StringWriter writer = new StringWriter();
writer.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
Marshaller marshaller = context.createMarshaller();

// marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // 格式化输出
marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true); // 去掉默认的报文头

marshaller.marshal(obj, writer);
result = writer.toString();
} catch (Exception e) {
logger.error("convertToXml exception {}", e.getMessage());
}

return result;
}

/**
* JavaBean转换成xml去除xml声明部分
*
* @param obj
* @param encoding
* @return
*/
public static String convertToXmlIgnoreXmlHead(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);
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
StringWriter writer = new StringWriter();
marshaller.marshal(obj, writer);
result = writer.toString();
} catch (Exception e) {
logger.error(" convertToXmlIgnoreXmlHead exception {}", e.getMessage());
}

return result;
}


public static void main(String[] args) {
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?> " +
"<service> " +
" <SYS_HEAD> " +
" <SvcCd>30530001</SvcCd> " +
" <SvcScn>18</SvcScn> " +
" <CnsmSysId>EBS000</CnsmSysId> " +
" <ChnlTp>17</ChnlTp> " +
" <SrcSysId>EBS000</SrcSysId> " +
" <CnsmSysSeqNo>EBS0000120200515162046875010801520</CnsmSysSeqNo> " +
" <SrcSysSeqNo>EBS0000120200515162046875010801520</SrcSysSeqNo> " +
" <Mac/> " +
" <TranDt>20200515</TranDt> " +
" <TranTm>515162046</TranTm> " +
" <TmnlNo/> " +
" <SrcSysTmnlNo/> " +
" <CnsmSysSvrId/> " +
" <SrcSysSvrId/> " +
" <FileFlg>0</FileFlg> " +
" </SYS_HEAD> " +
" <APP_HEAD> " +
" <TlrNo>EBANK2</TlrNo> " +
" <BranchId>10100</BranchId> " +
" <TlrPswd/> " +
" <TlrLvl/> " +
" <TlrTp/> " +
" <TlrVrfyMode>1</TlrVrfyMode> " +
" </APP_HEAD> " +
" <BODY> " +
" <CombiCod>600000000025</CombiCod> " +
" <CnlCd>Y001</CnlCd> " +
" </BODY> " +
"</service>";

Services services = XmlUtil.convertToJavaBean(xml, Services.class);
// System.out.println(services);

System.out.println(convertToXml(services));
}

}







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

@XmlRootElement(name = "service")
@XmlAccessorType(XmlAccessType.FIELD)
public class Services {

@XmlElement(name = "SYS_HEAD")
private SysHead sysHead;

@XmlElement(name = "APP_HEAD")
private AppHead appHead;

@XmlElement(name = "BODY")
private Body body;

public SysHead getSysHead() {
return sysHead;
}

public void setSysHead(SysHead sysHead) {
this.sysHead = sysHead;
}

public AppHead getAppHead() {
return appHead;
}

public void setAppHead(AppHead appHead) {
this.appHead = appHead;
}

public Body getBody() {
return body;
}

public void setBody(Body body) {
this.body = body;
}

@Override
public String toString() {
return "Services{" +
"sysHead=" + sysHead +
", appHead=" + appHead +
", body=" + body +
'}';
}
}






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

@XmlAccessorType(XmlAccessType.FIELD)
public class SysHead {

@XmlElement(name = "SvcCd")
private String svcCd;

@XmlElement(name = "CnsmSysSeqNo")
private String cnsmSysSeqNo;

public String getSvcCd() {
return svcCd;
}

public void setSvcCd(String svcCd) {
this.svcCd = svcCd;
}

public String getCnsmSysSeqNo() {
return cnsmSysSeqNo;
}

public void setCnsmSysSeqNo(String cnsmSysSeqNo) {
this.cnsmSysSeqNo = cnsmSysSeqNo;
}

@Override
public String toString() {
return "SysHead{" +
"svcCd='" + svcCd + '\'' +
", cnsmSysSeqNo='" + cnsmSysSeqNo + '\'' +
'}';
}
}
posted @ 2020-05-20 14:53  西瓜皮X  阅读(710)  评论(0编辑  收藏  举报