您的位置:首页 > 其它

生成xml并解析

2015-11-19 11:35 316 查看
package com.hanyang;

import java.io.BufferedReader;

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.StringReader;

import java.io.StringWriter;

import java.io.UnsupportedEncodingException;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.ParserConfigurationException;

import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.DocumentHelper;

import org.dom4j.Element;

import org.dom4j.io.DOMReader;

import org.dom4j.io.OutputFormat;

import org.dom4j.io.SAXReader;

import org.dom4j.io.XMLWriter;

import org.junit.Test;

import org.xml.sax.InputSource;

import org.xml.sax.SAXException;

public class XMLHandler {

    @Test

    public void createXML() throws IOException {

        // 给定的值

        String[] strings = { "用户占用", "cpu空闲" };

        // map

        Map<String, String> map = new HashMap<String, String>();

        map.put("1", "用户占用");

        map.put("2", "系统占用");

        map.put("3", "cpu空闲");

        map.put("4", "硬盘读速率");

        // 如果包含给定值,遍历key value

        if (map.values().contains(strings)) {

            // 自己看着写

        }

        Element root1 = DocumentHelper.createElement("response");

        Document document = DocumentHelper.createDocument(root1);

        // 给根节点添加孩子节点

        Element root = root1.addElement("load");

        Element element1 = root.addElement("disk_load");

        element1.addElement("disk_read").addText("相应的内容");

        element1.addElement("disk_write").addText("相应的内容");

        element1.addElement("iowait").addText("相应的内容");

        Element element2 = root.addElement("disk_storage_load");

        element2.addElement("total_storage").addText("相应的内容");

        Element element3 = root.addElement("net_load");

        element3.addElement("net_receive").addText("相应的内容");

        element3.addElement("net_send").addText("相应的内容");

        Element element4 = root.addElement("memory_load");

        element4.addElement("mem_total").addText("相应的内容");

        element4.addElement("men_available").addText("相应的内容");

        element4.addElement("cached_num").addText("相应的内容");

        Element element5 = root.addElement("cpu_load");

        element5.addElement("user_time").addText(map.get("1"));

        element5.addElement("system_time").addText(map.get("2"));

        element5.addElement("idle").addText(map.get("3"));

        // 把生成的xml文档存放在硬盘上 true代表是否换行

        OutputFormat format = new OutputFormat("    ", true);

        format.setEncoding("UTF-8");// 设置编码格式

        XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("Person.xml"),

                format);

        xmlWriter.write(document);

        xmlWriter.close();

    }

    @Test

    public void readXml() throws DocumentException, IOException {

        Map map = new HashMap();

        Document doc = null;

        InputStream in = null;

        try {

            File file = new File("Person.xml");

            List<String> lines=new ArrayList<String>();  

            BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"));  

            String line = null;  

            while ((line = br.readLine()) != null) {  

                  lines.add(line);  

            }  

            br.close();  

            for (String string : lines) {

                System.out.println(string);

            }

            SAXReader reader = new SAXReader();

            // 读取文件 转换成Document

            doc = reader.read(new File("Person.xml"));

            Element rootElt = doc.getRootElement(); // 获取根节点

            System.out.println("根节点:" + rootElt.getName()); // 拿到根节点的名称

            Iterator iter = rootElt.elementIterator("load"); // 获取根节点下的子节点lead

            System.out.println(iter);

            // 遍历lead节点

            while (iter.hasNext()) {

                Element recordEle = (Element) iter.next();

                Iterator iters = recordEle.elementIterator("disk_load"); // 获取子节点head下的子节点disk_load

                while (iters.hasNext()) {

                    Element itemEle = (Element) iters.next();

                    String disk_read = itemEle.elementTextTrim("disk_read");

                    String disk_write = itemEle.elementTextTrim("disk_write");

                    String iowait = itemEle.elementTextTrim("iowait");

                    System.out.println("disk_read:" + disk_read);

                    System.out.println("disk_write:" + disk_write);

                    map.put("disk_read", disk_read);

                    map.put("disk_write", disk_write);

                    map.put("iowait", iowait);

                }

            }

        } finally {

        }

    }

    

    private  void  xml2csv(InputStream in) {

        StringBuffer rs = new StringBuffer();

        SAXReader saxReader = new SAXReader();

        Document doc = null;

        try {

          doc = saxReader.read(in);

          List<Element> ls = doc.getRootElement().elements();

          for (int i = 0; ls != null && ls.size() > i; i++) {

            Iterator<Element> it = ls.get(i).elementIterator();

            StringBuffer row = new StringBuffer();

            StringBuffer header = new StringBuffer();

            while (it.hasNext()) {

              Element el = it.next();

              if (i == 0) {

                // header

                header.append(el.getName());

                if (it.hasNext()) {

                  header.append(",");

                }

              }

              row.append(el.getTextTrim());

              if (it.hasNext()) {

                row.append(",");

              }

            }

            row.append("\n");

            if (header.length() > 0) {

              header.append("\n");

              rs.append(header);

            }

            rs.append(row);

          }

        } catch (Exception e) {

          e.printStackTrace();

        }

      }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: