最近由于进行微信公众号开发,了解了一下java的一些xml操作。
所以本篇文章简单介绍xml字符串转map和object转xml字符串。
由于与微信交互的过程中一些数据微信是以xml字符串形式发送到我们服务器,然后将处理好的对象转成xml字符串发送到微信服务器。
所以需要封装个专门的工具类来处理,我建了一个类XmlUtil,用来实现上述功能。
jar包准备:
dom4j
dom4j
1.6.1
com.thoughtworks.xstream
xstream
1.4.9
xml字符串转map:
xml字符串的获取:从请求request的输入流中读取Document文档对象。
用SAXReader获取List,遍历,将当前迭代元素的name和text作为键值对存入map。
具体代码如下:
/*** xml转map
*
*@paramrequest
*@return*@throwsIOException*/
public static Map xml2Map(HttpServletRequest request) throwsIOException {
Map map = new HashMap();
SAXReader reader= newSAXReader();
InputStream is= null;
Document doc= null;try{
is=request.getInputStream();
doc=reader.read(is);
Element root=doc.getRootElement();
List list =root.elements();for(Element e : list) {
map.put(e.getName(), e.getText());
}
}catch(IOException e) {
e.printStackTrace();
}catch(DocumentException e) {
e.printStackTrace();
}finally{
is.close();
}returnmap;
}
接下来是XStream部分(比较重要):
private static String cdata_prefix = "
private static String cdata_suffix = "]]>";
/**
* 文本消息对象转Xml
*
* @param 对象
* @param 对象的类型
* @return
*/
public static String textMessage2Xml(Object object,Class> objectTargetClass) {