java 解析SOAP字符串指定标签转换为实体类
来源:互联网 发布:如何评价王毅 知乎 编辑:程序博客网 时间:2024/06/04 19:38
1.测试实体类
package test;@SuppressWarnings("serial")public class Policy implements java.io.Serializable{private String LicenseNo;private String LicenseType;private String ComCode;private String InsuredName;private long IdentifyNumber;public Policy() {super();}public String getLicenseNo() {return LicenseNo;}public void setLicenseNo(String licenseNo) {LicenseNo = licenseNo;}public String getLicenseType() {return LicenseType;}public void setLicenseType(String licenseType) {LicenseType = licenseType;}public String getComCode() {return ComCode;}public void setComCode(String comCode) {ComCode = comCode;}public String getInsuredName() {return InsuredName;}public void setInsuredName(String insuredName) {InsuredName = insuredName;}public long getIdentifyNumber() {return IdentifyNumber;}public void setIdentifyNumber(long identifyNumber) {IdentifyNumber = identifyNumber;}}2.转换工具类
package test;import java.io.ByteArrayInputStream;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;/** * XML工具类 * @author suyunlong * */public class XmlUtil {/** * 解析XML转换为Object * @param strXML xml字符串 * @param elementName 解析根标签名 * @param className 类名全路径(包名+类名) * @return */public static List<Object> parseObject(String strXML,String elementName,String className){List<Object> list=new ArrayList<Object>();DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); DocumentBuilder builder=null;try{builder=factory.newDocumentBuilder();Document doc=builder.parse(new ByteArrayInputStream(strXML.getBytes("utf-8"))); NodeList nodelist=doc.getElementsByTagName(elementName);for(int i=0;i<nodelist.getLength();i++){Node node=nodelist.item(i);NodeList chlist=node.getChildNodes();Object bean=Class.forName(className).newInstance();Class<?> cls=bean.getClass(); Method methods[]=cls.getDeclaredMethods(); Field fields[]=cls.getDeclaredFields();for(int j=0;j<chlist.getLength();j++){Node chnode=chlist.item(j);if(chnode instanceof Element){//System.out.println(chnode.getNodeName()+","+chnode.getTextContent());for(Field field:fields) {String fieldName=field.getName();if(fieldName.equals(chnode.getNodeName())){String fldtype=field.getType().getSimpleName(); String setMethod=pareSetName(fieldName); if(!checkMethod(methods,setMethod)) { continue; } Object value=chnode.getTextContent(); Method method=cls.getMethod(setMethod,field.getType()); if(null != value) { if("String".equals(fldtype)) { method.invoke(bean,value.toString()); } else if("Date".equals(fldtype)) { Date temp=parseDate(value.toString()); method.invoke(bean,temp); } else if("Integer".equals(fldtype) || "int".equals(fldtype)) { Integer intval=Integer.parseInt(value.toString()); method.invoke(bean,intval); } else if("Long".equalsIgnoreCase(fldtype)) { Long temp=Long.parseLong(value.toString()); method.invoke(bean,temp); } else if(fldtype.equalsIgnoreCase("Float")) { Float f=Float.parseFloat(value.toString()); method.invoke(bean,f); } else if("Double".equalsIgnoreCase(fldtype)) { Double temp=Double.parseDouble(value.toString()); method.invoke(bean,temp); } else if("Boolean".equalsIgnoreCase(fldtype)) { Boolean temp=Boolean.parseBoolean(value.toString()); method.invoke(bean,temp); } else { System.out.println("not supper type"+fldtype); } } break;} }}}list.add(bean);}}catch(Exception e){System.out.println(e.getMessage());e.printStackTrace();}return list;}/** * 拼接某属性set 方法 * @param fldname * @return */ public static String pareSetName(String fldname) { if(null==fldname || "".equals(fldname)) { return null; } String pro="set"+fldname.substring(0,1).toUpperCase()+fldname.substring(1); return pro; } /** * 判断该方法是否存在 * @param methods * @param met * @return */ public static boolean checkMethod(Method methods[],String met) { if(null != methods) { for(Method method:methods) { if(met.equals(method.getName())) { return true; } } } return false; } /** * 格式化string为Date * @param datestr * @return date */ public static Date parseDate(String datestr) { if(null==datestr || "".equals(datestr)) { return null; } try { String fmtstr=null; if(datestr.indexOf(':')>0) { fmtstr="yyyy-MM-dd HH:mm:ss"; } else { fmtstr="yyyy-MM-dd"; } SimpleDateFormat sdf=new SimpleDateFormat(fmtstr); return sdf.parse(datestr); } catch(Exception e) { System.out.println(e.getMessage()); return null; } }@SuppressWarnings("rawtypes")public static void main(String[] args) {String strXML="<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">" +"<soapenv:Header xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" >" +"<ns3:requesthead xmlns:ns3=\"http://pub.webservice.cmp.com\" xmlns:ns2=\"http://pan.prpall.webservice.cmp.com\">" +"<ns3:request_type>Q101</ns3:request_type><ns3:uuid>8918211j-12121212</ns3:uuid>" +"<ns3:sender>0545</ns3:sender><ns3:server_version>2.0</ns3:server_version>" +"<ns3:user>0545</ns3:user><ns3:password>4005973D0841EAC706DC9B8B32858D9D</ns3:password>" +"<ns3:areacode>45000000</ns3:areacode><ns3:ChnlNo>yntc</ns3:ChnlNo>" +"<ns3:flowintime>2017-05-24 15:00:21</ns3:flowintime></ns3:requesthead>" +"</soapenv:Header><soap:Body xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" +"<ns2:GETORIGINPOLICYREQ xmlns:ns2=\"http://pan.prpall.webservice.cmp.com\" xmlns:ns3=\"http://pub.webservice.cmp.com\">" +"<ns2:BIZ_ENTITY><Policy><LicenseNo>桂QW1231</LicenseNo>" +"<LicenseType>02</LicenseType><ComCode>45010200</ComCode>" +"<Resource>0524</Resource><InsuredName>寒冰</InsuredName>" +"<IdentifyType>01</IdentifyType>" +"<IdentifyNumber>220381199203164520</IdentifyNumber>" +"<ChannelCode>000002000001</ChannelCode></Policy></ns2:BIZ_ENTITY>" +"</ns2:GETORIGINPOLICYREQ></soap:Body></soapenv:Envelope>";List list=XmlUtil.parseObject(strXML,"Policy","test.Policy");for(int i=0;i<list.size();i++){Policy policy=(Policy)list.get(i);System.out.println(policy.getComCode()+","+policy.getIdentifyNumber()+","+policy.getInsuredName()+","+policy.getLicenseNo()+","+policy.getLicenseType());}}}3.测试结果
45010200,220381199203164520,寒冰,桂QW1231,02
阅读全文
0 0
- java 解析SOAP字符串指定标签转换为实体类
- java 解析字符串soap
- java Map转换为实体类
- java将JSON字符串转换为实体类对象,基于net.sf.json实现
- 如何将EntityFramework实体类转换为JSON字符串
- 将json字符串转换为实体类对象
- json 字符串转换为Object实体数组
- html标签实体与字符串格式的标签 转换问题
- java 反射 将json对象转换为实体类
- XStream 用法详解 XML 转换为 java 实体类
- 数据库的表字段自动转换为java实体类
- JSON字符串转换成Java实体类(POJO)
- JSON字符串转换成java实体类的工具
- 解析java实体类
- 解析java实体类
- 解析java实体类
- 使用Java注解将实体类转化为sql字符串
- java转换字符串为string数组并解析
- RANSAC Fitting
- 关于memset初始化填充数组。
- ConcurrentHashMap和HashMap和HashTable
- Collection接口的常用方法
- linux 无线网卡的连接(命令行) —— network-manager(nmcli)
- java 解析SOAP字符串指定标签转换为实体类
- tcp协议系列文章(4):TCP带宽,时延和RTT等的关系
- Kotlin扩展函数与重载操作符解析
- 并发编程cas的aba问题
- ButterKnife的用法
- 让unittest框架在fail时自动截图的装饰器
- SQL语句总结
- 【Bzoj1901】Dynamic Ranking
- 用openssl生成含有中文信息的证书