zoukankan      html  css  js  c++  java
  • Java:XML篇,使用SAX写入XML数据

    1. 描述

    参考:http://blog.csdn.net/hairongtian/article/details/7525292,Java中用SAX解析XML,具体包括读写,这篇是写入示范。

    2. 示范代码

    package com.clzhang.sample.xml;
    
    import java.io.*;
    import java.util.*;
    
    import javax.xml.transform.OutputKeys;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.sax.SAXTransformerFactory;
    import javax.xml.transform.sax.TransformerHandler;
    import javax.xml.transform.stream.StreamResult;
    
    import org.xml.sax.SAXException;
    
    // SAX写入XML测试
    // 参考:http://blog.csdn.net/hairongtian/article/details/7525292
    public class SAXWriteTest {
        // 句柄
        private TransformerHandler handler = null;
        // 输出流
        private OutputStream outStream = null;
        // 根节点
        private String rootElement;
    
        public SAXWriteTest(String fileName, String rootElement) throws Exception {
            this.rootElement = rootElement;
            
            // 创建句柄,并设置初始参数
            SAXTransformerFactory fac = (SAXTransformerFactory) SAXTransformerFactory
                    .newInstance();
            handler = fac.newTransformerHandler();
            Transformer transformer = handler.getTransformer();
            transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
            transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
    
            outStream = new FileOutputStream(fileName);
            handler.setResult(new StreamResult(outStream));
            
            System.out.println("初始化成功");
        }
    
        public void start() throws Exception {
            handler.startDocument();
            handler.startElement("", "", rootElement, null);
            System.out.println("文档开始...");
        }
        
        // 这个函数是最重要的,它可以控制各个细节:是否写入属性值,文本值又是多少等等
        public void write(HashMap<String, String> map, String element)
                throws SAXException {
            handler.startElement("", "", element, null);
            Iterator<String> it = map.keySet().iterator();
            while (it.hasNext()) {
                String key = (String) it.next();
                String value = map.get(key);
                handler.startElement("", "", key, null);
                handler.characters(value.toCharArray(), 0, value.length());
                handler.endElement("", "", key);
            }
            handler.endElement("", "", element);
            System.out.println("写入元素成功!");
        }
    
        public void end() throws Exception {
            handler.endElement("", "", rootElement);
            handler.endDocument();
            outStream.close();
            System.out.println("文档结束!");
        }
    
        public static void main(String[] args) throws Exception {
            SAXWriteTest xml = new SAXWriteTest("student.xml", "students");
            xml.start();
            
            HashMap<String, String> map = new HashMap<String, String>();
            map.put("id", "20050505");
            map.put("name", "zhaobenshan");
            map.put("age", "21");
            map.put("classes", "Act051");
            xml.write(map, "student");
    
            map = new HashMap<String, String>();
            map.put("id", "20050506");
            map.put("name", "songdandan");
            map.put("age", "20");
            map.put("classes", "Act052");
            xml.write(map, "student");
    
            map = new HashMap<String, String>();
            map.put("id", "20050507");
            map.put("name", "fanchushi");
            map.put("age", "21");
            map.put("classes", "Act051");
            xml.write(map, "student");
    
            xml.end();
        }
    }
  • 相关阅读:
    云小课 | 搬迁本地数据至OBS,多种方式任你选
    云小课 | 磁盘容量不够用?小课教你来扩容!
    云图说 | 容器交付流水线ContainerOps,助力企业容器化转型
    云图说 | 华为云MCP多云容器平台,让您轻松灾备!
    【DevCloud · 敏捷智库】如何拆分用户故事
    十分钟从入门到精通(下)——OBS权限配置
    十分钟从入门到精通(上)——OBS权限配置
    云图说|全新华为云云备份服务:为您的数据提供三合一的保障
    费米问题——芝加哥有多少钢琴调音师?
    算法浅谈——人人皆知却很多人写不对的二分法
  • 原文地址:https://www.cnblogs.com/nayitian/p/2867241.html
Copyright © 2011-2022 走看看