JAXB实现XML和java对象互转以及soapXml和对象互转需要注意的地方

前端之家收集整理的这篇文章主要介绍了JAXB实现XML和java对象互转以及soapXml和对象互转需要注意的地方前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1. public class JaxbXmlUtil {
  2. private static final String DEFAULT_ENCODING = "UTF-8";
  3. /** * pojo转换成xml 默认编码UTF-8 */ public static String convertBeanToXml(Object obj) throws Exception {
  4. return convertBeanToXml(obj,DEFAULT_ENCODING);
  5. }
  6. /** * pojo转换成xml */ public static String convertBeanToXml(Object obj,String encoding) throws Exception {
  7. String result;
  8. JAXBContext context = JAXBContext.newInstance(obj.getClass());
  9. Marshaller marshaller = context.createMarshaller();
  10. // 生成报文的格式化
  11. marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,true);
  12. marshaller.setProperty(Marshaller.JAXB_ENCODING,encoding);
  13. StringWriter writer = new StringWriter();
  14. marshaller.marshal(obj,writer);
  15. result = writer.toString();
  16. return result;
  17. }
  18. /** * xml转换成pojo */ @SuppressWarnings("unchecked")
  19. public static <T> T convertXmlToJavaBean(String xml,Class<T> t) throws Exception {
  20. T obj;
  21. JAXBContext context = JAXBContext.newInstance(t);
  22. Unmarshaller unmarshaller = context.createUnmarshaller();
  23. obj = (T) unmarshaller.unmarshal(new StringReader(xml));
  24. return obj;
  25. }
  26. }
  1. jaxbxmlpojo相互转换,上面这种工具类就不说了,看代码就行  这次主要是soapXML请求webservice接口,返回报文再进行解析。本来使用的wsdl直接生成客户端代码 但由于种种原因最后选择了org.apache.commons.httpclient 调用webservice的接口 就想仿照生成的客户端代码自己写下转换 这里主要说一下使用时需要注意的地方(这次遇到的两个坑) pojo---》soapXML: 1: 需要用到xml格式的时间时注意中间有个T 如:<trxDate>2017-11-05T02:57:56</trxDate> 转换的时候注意下边的name 值为dateTime ,切不可写成date time @XmlSchemaType(name = "dateTime")
  2.        protected XMLGregorianCalendar trxDate;
  3. soapXML---》:pojo
  4.     1:javax.xml.bind.UnmarshalException: unexpected element (uri:"",local:"xxx")
  5.      这种错误就是xml转对象的时候不识别造成的,需要在对应的对象或自端上加上别名namespace
  6.      (就是你报错信息中的uri)即可。 这个错误花了一天多才理清,嗯现在是凌晨3
  7. 感谢偶然间看到这个 帖子 和这个 博客

猜你在找的XML相关文章