java xmlutil_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 xmlToBean(String xmlPath, Class 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 convertToJavaBean(String xml, Class 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\" ?> " +

" " +

" " +

" 30530001 " +

" 18 " +

" EBS000 " +

" 17 " +

" EBS000 " +

" EBS0000120200515162046875010801520 " +

" EBS0000120200515162046875010801520 " +

" " +

" 20200515 " +

" 515162046 " +

" " +

" " +

" " +

" " +

" 0 " +

" " +

" " +

" EBANK2 " +

" 10100 " +

" " +

" " +

" " +

" 1 " +

" " +

"

" +

" 600000000025 " +

" Y001 " +

" " +

"";

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 + '\'' +

'}';

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值