使用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());

    }

}

 

你可能感兴趣的:(dom4j)