利用dom4j将实体类转换为对应的xml报文
生活随笔
收集整理的這篇文章主要介紹了
利用dom4j将实体类转换为对应的xml报文
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
利用dom4j生成xml報文
目標格式:
<?xml version="1.0" encoding="GBK"?><Packet type="REQUEST" version="1.0"><Head><RequestType>C03</RequestType><UserCode>BOCIJS</UserCode><PassWord>0047CC</PassWord></Head><Body><Policy><QueryCode>PDCXC01BOCIJS1501440376628307332</QueryCode><AgencyCode>08938875X</AgencyCode><AreaFlag>320600</AreaFlag><PolicyNo>3270320153206000019676</PolicyNo><Coverage><CoverageType>114</CoverageType><CoverageCode>2703</CoverageCode><CoverageName>短期人身險</CoverageName><EffectiveDate>201508250000</EffectiveDate><ExpireDate>201608242359</ExpireDate><Premium>200.0</Premium></Coverage><CurrencyCode>CNY</CurrencyCode><TotalPremium>200.0</TotalPremium><PolicyDate>201508240000</PolicyDate><PracticeCertificateCode>00200906320000134701</PracticeCertificateCode><PracticeName>胡亞芬</PracticeName></Policy></Body>
</Packet>
1、首先創建好你要轉換的實體類,然后導入依賴(dom4j依賴)和util文件,util文件如下:
public class XMMLUtil { public static void entityTransferToXml(Object object, Element root, Class clazz) { try { // 創建根節點元素 Element entity = root.addElement(clazz.getSimpleName()); Field[] field = object.getClass().getDeclaredFields(); // 獲取實體類b的所有屬性,返回Field數組 for (int j = 0; j < field.length; j++) { // 遍歷所有有屬性 String name = field[j].getName(); // 獲取屬性的名字 if (!name.equals("serialVersionUID")) {//去除串行化序列屬性 name = name.substring(0, 1).toUpperCase() + name.substring(1); // 將屬性的首字符大寫,方便構造get,set方法 Method m = object.getClass().getMethod("get" + name);// System.out.println("屬性get"+name+"方法返回值類型:" + m.getReturnType()); Object propertievalue = m.invoke(object);// 獲取屬性值 if (null != propertievalue) { //給類名變小寫,已注釋//name = name.substring(0, 1).toLowerCase() + name.substring(1); if (m.getReturnType().toString().contains("java.lang")) { Element propertie = entity.addElement(name); propertie.setText(propertievalue.toString()); } else if (java.util.List.class.equals(m.getReturnType())) { entityTransferToXml((List<Object>) propertievalue, entity, name); } else {//Element propertie = entity.addElement(name); entityTransferToXml(propertievalue, entity, m.getReturnType()); } } } } } catch (Exception e) { e.printStackTrace(); } } public static <T> void entityTransferToXml(List<T> objects, Element root, String name) {//Element entitySet = root.addElement(name); for (Object object : objects) { entityTransferToXml(object, root, object.getClass()); } }
}
這個util文件共有兩個方法(方法名相同,參數不同,方法重載),第一個是對象轉xml,第二個是List轉xml。
2、這時候只需要將要轉換的對象傳過來,創建一個新的document對象,然后調用方法即可,如下所示:
public String generateMessage(P p){ //1.創建document對象,代表整個xml文檔 org.dom4j.Document document = DocumentHelper.createDocument(); //2.創建根節點rss
org.dom4j.Element Packet =document.addElement("Packet");
System.out.println("---將對象轉換成string類型的xml Start---");XMMLUtil.entityTransferToXml(p.getHead(),Packet,p.getHead().getClass());XMMLUtil.entityTransferToXml(p.getBody(),Packet,p.getBody().getClass());
return document.asXML();
總結
以上是生活随笔為你收集整理的利用dom4j将实体类转换为对应的xml报文的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java Random()函数生成指定范
- 下一篇: 使用ajax不刷新页面获取、操作数据