一、解析xml(dom4j):
/**
* 明文模式解析请求参数(结果用hashmap存储)分为两步
* @param request
* @return
* @throws Exception
*/
public static HashMap<String, String> parseXML(HttpServletRequest request)throws Exception {
HashMap<String, String> map = new HashMap<String, String>();
SAXReader reader = new SAXReader();
Document doc = reader.read(request.getInputStream());
// 得到xml的根节点
Element root = doc.getRootElement();
recursiveParseXML(root,map);
return map;
}
private static void recursiveParseXML(Element root,HashMap<String, String> map ){
List<Element>elementList = root.elements();
//判断有没有子元素列表
if(elementList.size() == 0){
System.out.println(root.getName()+"=>"+root.getTextTrim());
map.put(root.getName(),root.getTextTrim());
}
else{
//遍历
for(Element e:elementList){
recursiveParseXML(e,map);
}
}
}
二、java对象转换为xml:(xstream):
<span style="font-size:10px;">(CDATA格式)
private static XStream xstream = new XStream(new XppDriver() {
public HierarchicalStreamWriter createWriter(Writer out) {
return new PrettyPrintWriter(out) {
// 对所有xml节点都增加CDATA标记
boolean cdata = true;
public void startNode(String name, Class clazz) {
super.startNode(name, clazz);
}
protected void writeText(QuickWriter writer, String text) {
if (cdata) {
writer.write("<![CDATA[");
writer.write(text);
writer.write("]]>");
} else {
writer.write(text);
}
}
};
}
});
使用xstream:
public static String messageToXML(TextMessage textMessage){
xstream.alias("xml", TextMessage.class);
return xstream.toXML(textMessage);
}</span>