使用dom4j生成xml字符串,以及解析xml字符串
基于dom4j-1.6.1.jar
import java.io.IOException; import java.io.StringWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; /** * * @author y */ public class Test { /** * @param args the command line arguments */ public static void main(String[] args) throws DocumentException { Map<String, Object> map = new HashMap<String, Object>(); map.put("name", "李四"); map.put("age", 25); //System.out.println(map2xml(map)); List<Object> list = new ArrayList<Object>(); list.add("测试1"); list.add("测试2"); list.add("测试3"); //System.out.println(list2xml(list,"items")); List<Map<String,Object>> listMap = new ArrayList<Map<String,Object>>(); Map<String,Object> map1 = new HashMap<String,Object>(); map1.put("name", "张三"); map1.put("age", 23); listMap.add(map1); map1 = new HashMap<String,Object>(); map1.put("name", "李四"); map1.put("age", 24); listMap.add(map1); map1 = new HashMap<String,Object>(); map1.put("name", "王五"); map1.put("age", 25); listMap.add(map1); System.out.println(listMap2xml(listMap,"users","user")); } public static String listMap2xml(List<Map<String,Object>> list,String listRoot,String mapRoot){ Document doc = DocumentHelper.createDocument(); Element rootEle = doc.addElement("result"); Element noEle = rootEle.addElement("no"); Element msgEle = rootEle.addElement("msg"); if(null!=list && !list.isEmpty()){ noEle.setText("1"); msgEle.setText("成功获取相关信息"); Element listRootEle = rootEle.addElement(listRoot); for(Map<String,Object> map:list){ Element mapRootELe = listRootEle.addElement(mapRoot); Set<Map.Entry<String,Object>> set = map.entrySet(); Iterator<Map.Entry<String,Object>> iter = set.iterator(); while(iter.hasNext()){ Map.Entry<String,Object> entry = (Map.Entry<String,Object>)iter.next(); Element ele = mapRootELe.addElement(entry.getKey()); ele.setText(String.valueOf(entry.getValue())); } } }else{ noEle.setText("0"); msgEle.setText("没有获取到相关信息"); } StringWriter sw = new StringWriter(); OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("utf-8"); try { XMLWriter xmlWriter = new XMLWriter(sw, format); xmlWriter.write(doc); } catch (IOException ex) { Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex); }finally{ try { sw.close(); } catch (IOException ex) { Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex); } } return sw.toString(); } public static String list2xml(List<Object> list,String itemRoot){ Document doc = DocumentHelper.createDocument(); Element rootEle = doc.addElement("result"); Element noEle = rootEle.addElement("no"); Element msgEle = rootEle.addElement("msg"); if(null!=list && !list.isEmpty()){ noEle.setText("1"); msgEle.setText("成功获取相关信息"); Element itemRootEle = rootEle.addElement(itemRoot); for(Object obj:list){ Element ele = itemRootEle.addElement("item"); ele.setText(String.valueOf(obj)); } }else{ noEle.setText("0"); msgEle.setText("没有获取到相关信息"); } StringWriter sw = new StringWriter(); OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("utf-8"); try { XMLWriter xmlWriter = new XMLWriter(sw, format); xmlWriter.write(doc); } catch (IOException ex) { Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex); }finally{ try { sw.close(); } catch (IOException ex) { Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex); } } return sw.toString(); } public static String map2xml(Map<String, Object> map) { Document doc = DocumentHelper.createDocument(); Element rootEle = doc.addElement("result"); Element noEle = rootEle.addElement("no"); Element msgEle = rootEle.addElement("msg"); if(null!=map && !map.isEmpty()){ noEle.setText("1"); msgEle.setText("成功获取相关信息"); Set<Map.Entry<String, Object>> set = map.entrySet(); Iterator<Map.Entry<String, Object>> iter = set.iterator(); while(iter.hasNext()){ Map.Entry<String, Object> entry = (Map.Entry<String, Object>) iter.next(); Element ele = rootEle.addElement(entry.getKey()); ele.setText(String.valueOf(entry.getValue())); } }else{ noEle.setText("0"); msgEle.setText("没有获取到相关信息"); } StringWriter sw = new StringWriter(); OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("utf-8"); try { XMLWriter xmlWriter = new XMLWriter(sw, format); xmlWriter.write(doc); } catch (IOException ex) { Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex); }finally{ try { sw.close(); } catch (IOException ex) { Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex); } } return sw.toString(); } public static void test4() { Document doc = DocumentHelper.createDocument(); Element rootEle = doc.addElement("sudent"); Element nameEle = rootEle.addElement("name"); nameEle.setText("张三"); Element ageEle = rootEle.addElement("age"); ageEle.setText("25"); try { StringWriter sw = new StringWriter(); OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("utf-8"); XMLWriter xmlWriter = new XMLWriter(sw, format); xmlWriter.write(doc); System.out.println(sw.toString()); } catch (IOException ex) { Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex); } } public static void test3() throws DocumentException { String str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<books>" + " <book>" + " <name>Think in Java</name>" + " <price>120.0</price>" + " <chapters>" + " <c>001</c>" + " <c>002</c>" + " <c>003</c>" + " </chapters>" + " </book>" + " <book>" + " <name>Think in Java2</name>" + " <price>220.0</price>" + " </book>" + "</books>"; Document doc = DocumentHelper.parseText(str); Element books = doc.getRootElement(); List<Element> childEles = books.elements(); Iterator<Element> iter = childEles.iterator(); while (iter.hasNext()) { Element book = iter.next(); Element name = book.element("name"); Element price = book.element("price"); System.out.println("name:" + name.getText() + ",price:" + price.getText()); Element chapters = book.element("chapters"); if (null != chapters) { Iterator<Element> chaptersIter = chapters.elementIterator(); if (null != chaptersIter) { while (chaptersIter.hasNext()) { Element c = chaptersIter.next(); System.out.println("===>" + c.getText()); } } } } } public static void test2() throws DocumentException { String str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<books>" + " <book>" + " <name>Think in Java</name>" + " <price>120.0</price>" + " </book>" + " <book>" + " <name>Think in Java2</name>" + " <price>220.0</price>" + " </book>" + "</books>"; Document doc = DocumentHelper.parseText(str); Element books = doc.getRootElement(); List<Element> childEles = books.elements(); Iterator<Element> iter = childEles.iterator(); while (iter.hasNext()) { Element book = iter.next(); Element name = book.element("name"); Element price = book.element("price"); System.out.println("name:" + name.getText() + ",price:" + price.getText()); } } public static void test1() throws DocumentException { String str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<dzswdjz>" + " <qr_code>" + " <nsrsbh>nsrsbh</nsrsbh >" + " <retStatus >retStatus</retStatus>" + " <img_name>img_name</img_name>" + " <img_byteString>img_byteString</img_byteString>" + " </qr_code>" + "</dzswdjz>"; Document doc = DocumentHelper.parseText(str); //获取到父节点 Element dzswdjz = doc.getRootElement(); //定位到qr_code节点 Element qr_code = dzswdjz.element("qr_code"); Element nsrsbh = qr_code.element("nsrsbh"); Element retStatus = qr_code.element("retStatus"); Element img_name = qr_code.element("img_name"); Element img_byteString = qr_code.element("img_byteString"); System.out.println("nsrsbh:" + nsrsbh.getText()); System.out.println("retStatus:" + retStatus.getText()); System.out.println("img_name:" + img_name.getText()); System.out.println("img_byteString:" + img_byteString.getText()); } }