生成xml并解析

来源:互联网 发布:rf流体软件 编辑:程序博客网 时间:2024/06/08 08:23
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();
        }

      }

}

0 0