生成xml并解析

原创 2015年11月19日 11:35:41
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();
        }

      }

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android中的XML解析与文件生成

  • 2014年11月07日 19:53
  • 105KB
  • 下载

Android review xml 解析 生成

  • 2014年07月10日 15:37
  • 1.3MB
  • 下载

【Cocos2d-x】支持 i18n 国际化(2)——i18n XML 解析生成头文件

通过 Python 脚本解析资源 XML,生成可供 C++ 程序使用的 .h 资源头文件。

android xml多种解析生成

  • 2013年04月23日 17:05
  • 17KB
  • 下载

Android 生成和PULL解析xml

  • 2015年02月02日 18:32
  • 988KB
  • 下载

JDom解析和生成XML文档

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本人声明。否则将追究法律责任。 作者:永恒の_☆ 地址:http://blog.csdn.net/chenghui0317...

dom4j解析及生成 xml代码收集

  • 2010年10月20日 23:24
  • 4KB
  • 下载

xml文件生成和解析

  • 2015年10月13日 15:10
  • 1.58MB
  • 下载

XML解析、生成、Xpath

XML解析方式SAX解析方式 SAX(simple API for XML)是一种XML解析的替代方法。 相比于DOM,SAX是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。...

xml文件生成与解析

  • 2016年05月12日 13:14
  • 6.04MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:生成xml并解析
举报原因:
原因补充:

(最多只允许输入30个字)