背景:最近在研究微信开发,而且是在基于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(); }原文链接:https://www.f2er.com/xml/297463.html