加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

微信开发不用xstream来将对象解析成xml

发布时间:2020-12-16 06:32:53 所属栏目:百科 来源:网络整理
导读:背景:最近在研究微信开发,而且是在基于java 开发,所以参考了柳峰的博客关于将消息封装成xml格式返回, 开源框架xstream来实现Java类到xml的转换, 但是就像好多人所发现的一样,配置好之后通过手机微信端访问会报错: 在 访问/coreServlet时报了一个错误N

背景:最近在研究微信开发,而且是在基于java 开发,所以参考了柳峰的博客关于将消息封装成xml格式返回,开源框架xstream来实现Java类到xml的转换,但是就像好多人所发现的一样,配置好之后通过手机微信端访问会报错:访问/coreServlet时报了一个错误NoClassDefFoundError(类找不到),并且提示org.liufeng.weixin.util.MessageUtil类不能被实例化。这里柳峰也给出了解决方案:NoClassDeffoundError解决方案。但是这也不是很好的办法。所以自己也尝试了通过其它方法来解决问题,首先考虑基于目前应用运行的环境已有的lib包:dom4j.jar来解决。dom4j里面的JAXBContextjaxbContext来获得要解析的Class类,这里需要下载dom4j.jar包,用MarshallerjaxbMarshaller来将生成实例,然后用jaxbMarshaller.marshal(textMessage,writer)来生成xml文件。 但是问题来了,怎样让writer生成的xml格式化输出呢。因为微信返回消息有些是CDATA。想了很多办法,目前没有解决这个问题,恳请各位高手指点。

public static String textMessageToXml(TextMessage textMessage) {
			JAXBContext jaxbContext = JAXBContext.newInstance(TextMessage.class);
			Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
			// output pretty printed  
			jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,true);
			Writer writer = new StringWriter();
			format.setSuppressDeclaration(true); 	
			jaxbMarshaller.marshal(textMessage,writer);
			System.out.println("修改好之后的xml:"+xmlWriter);
			return xmlWriter.toString();	
	}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读