生成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();
        }

      }

}

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

四种生成和解析XML文档的方法

四种生成和解析XML文档的方法众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM、SAX、JDOM和DOM4J下面首先给出这四种方法的jar包下载地址DOM:在现在的Java J...
  • github_39295111
  • github_39295111
  • 2017年08月06日 11:01
  • 452

[XML]JAVA解析XSD,并根据选择节点生成XSL

xml,xsd,xsl
  • cubuntu
  • cubuntu
  • 2010年06月12日 16:18
  • 5874

C#XML生成与解析

using UnityEngine; using System.Collections; using System.Collections.Generic; using System.Xml; usi...
  • yuxikuo_1
  • yuxikuo_1
  • 2016年02月18日 00:15
  • 468

JAVA 异步ajax实现xls 文件上传 并且解析xls

html: var upload = function(){ $.ajaxFileUpload({ url: 'map/upload', secureuri: f...
  • qilin001cs
  • qilin001cs
  • 2016年07月20日 10:09
  • 1265

Okhttp xml和json数据解析

OkHttp发送请求 需要添加依赖 public class HttpUtil {     public static void sendRequestWithHttp(String addre...
  • a1129460278
  • a1129460278
  • 2018年01月05日 23:05
  • 30

JDom解析和生成XML文档

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

用Java自带API解析XML字符串和生成XML字符串的例子

Parse XML String and create XML String Sample Using Java DOM API package g002.javaxmltest; imp...
  • zgkli6com
  • zgkli6com
  • 2014年01月19日 14:12
  • 1058

PBDOM 解析和生成XML

因为项目需要,研究了一下pb dom 处理xml 的功能,发现还挺方便的。废话少说,直接进入正题:1. PBDOM设置1)添加pbdom120.pbd(%SYBASE%/Shared/PowerBui...
  • lxqluo
  • lxqluo
  • 2010年12月31日 11:06
  • 8620

通过xml解析生成pdf(2012-11-2)

package com.isoftstone.impl.doc; import java.io.File; import java.io.FileNotFoundException; imp...
  • ITrookieGe
  • ITrookieGe
  • 2012年11月02日 16:34
  • 1539

XML文件的解析、读取和生成(C/C++、win7、VS2010)

一.下载、安装libxml 下载地址http://zlatkovic.com/libxml.en.html进去后选择右侧Win32 binaries (FTP)即可进入FTP服务器下载。 ...
  • dyx810601
  • dyx810601
  • 2016年01月26日 14:39
  • 3490
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:生成xml并解析
举报原因:
原因补充:

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