建造者模式实例数据拼接 java生成真实XML文件

简介: 建造者模式实例数据拼接 java生成真实XML文件

导出数据的应用框架,通常对于具体的导出内容和格式是有要求的:
分成三部分,文件头、文件体、文件尾
文件头:分公司编号、导出数据的日期,对于文本格式,中间用逗号分离
文件体:表名称,然后分条描述数据。。。。
文件尾:输出人
不管是输出文本文件,还是输出XML文件,步骤基本一致
先拼接文件头的内容
然后拼接文件体的内容
在拼接文件尾的内容
最后把拼接好的内容输出去成为文件

在这里插入图片描述

Builder

package 建造者模式;

public abstract class Builder {
    protected String id;
    protected String date;
    protected String TableName;
    protected String data;
    protected String Person;
     
     
    public Builder(String id, String date, String tableName, String data,String person)
    {
        this.id = id;
        this.date = date;
        TableName = tableName;
        this.data = data;
        Person = person;
    }
    public abstract void BuildHead();
    public abstract void BuildBody();
    public abstract void BuildFoot();
}

TXT

package 建造者模式;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class TXT extends Builder {
    public TXT(String id, String date, String tableName, String data,
            String person) {
        super(id, date, tableName, data, person);
    }
private String str="";
    
@Override
public void BuildHead() {
    str+=id+","+date+"\r\n";
    
}
@Override
public void BuildBody() {
    str+=TableName+"\r\n";
    str+=data+"\r\n";
    
}
@Override
public void BuildFoot() {
    str+=Person+"\r\n";
    
}
public void Result() throws IOException{
    File f1=new File("c:\\a.txt");
    FileWriter fw=new FileWriter(f1);
    BufferedWriter bw=new BufferedWriter(fw); 
            bw.write(str);
            bw.close();
 
 
}
}

XML

package 建造者模式;

import java.io.File;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.*;

public class XML extends Builder {
    private Document document;
    private Element container;
public XML(String id, String date, String tableName, String data,
            String person) throws ParserConfigurationException 
            {
        super(id, date, tableName, data, person);        
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = factory.newDocumentBuilder();
         document = db.newDocument();
    }
 
 
    @Override
    public void BuildHead() {
        document.setXmlStandalone(true);
        container=document.createElement("Conatiner");
        Element head=document.createElement("Head");
        
        Element Id = document.createElement("Id");
        Id.setTextContent(id);
        
        Element Date = document.createElement("Date");
        Date.setTextContent(date);
        head.appendChild(Id);
        head.appendChild(Date);
    container.appendChild(head);
        
        
    }
 
 
    @Override
    public void BuildBody() {
        
        Element Body=document.createElement("body");
        Element tname = document.createElement("TableName");
        tname.setTextContent(TableName);
        
        Element Data = document.createElement("Data");
        Data.setTextContent(data);
        Body.appendChild(Data);
        Body.appendChild(tname);
        container.appendChild(Body);
        
    }
 
 
    @Override
    public void BuildFoot() {
        
        
        Element foot=document.createElement("foot");
        Element per = document.createElement("Person");
        per.setTextContent(Person);
        foot.appendChild(per);
        container.appendChild(foot);
        document.appendChild(container);
    }
    public void Result() throws TransformerException
    {TransformerFactory tff = TransformerFactory.newInstance();
 
    Transformer tf = tff.newTransformer();
    
    tf.setOutputProperty(OutputKeys.INDENT, "yes");
    tf.transform(new DOMSource(document), new StreamResult(new File("g:/shujv.xml")));
    }
}

Director

package 建造者模式;

public class Director {

private Builder eb;
 
public Director(Builder eb) {
    
    this.eb = eb;
}
public void Build(){
    eb.BuildHead();
    eb.BuildBody();
    eb.BuildFoot();
}
}

Test

package 建造者模式;

import java.io.IOException;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;

public class Test {
public static void main(String args[]) throws IOException, ParserConfigurationException, TransformerException{
    TXT tb=new TXT("001","2020/4/16","数目","20","张三");
        Director dr=new Director(tb);
        dr.Build();
        tb.Result();
        XML ex=new XML("002","2020/4/17","价格","30","李四");
    dr=new Director(ex);
    dr.Build();
    ex.Result();
    }
}
目录
相关文章
|
11天前
|
Java 程序员 容器
Java中的变量和常量:数据的‘小盒子’和‘铁盒子’有啥不一样?
在Java中,变量是一个可以随时改变的数据容器,类似于一个可以反复打开的小盒子。定义变量时需指定数据类型和名称。例如:`int age = 25;` 表示定义一个整数类型的变量 `age`,初始值为25。 常量则是不可改变的数据容器,类似于一个锁死的铁盒子,定义时使用 `final` 关键字。例如:`final int MAX_SPEED = 120;` 表示定义一个名为 `MAX_SPEED` 的常量,值为120,且不能修改。 变量和常量的主要区别在于变量的数据可以随时修改,而常量的数据一旦确定就不能改变。常量主要用于防止意外修改、提高代码可读性和便于维护。
|
8天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
31 2
|
1月前
|
算法 Java 数据处理
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。HashSet基于哈希表实现,提供高效的元素操作;TreeSet则通过红黑树实现元素的自然排序,适合需要有序访问的场景。本文通过示例代码详细介绍了两者的特性和应用场景。
40 6
|
30天前
|
存储 Java API
深入剖析Java Map:不只是存储数据,更是设计艺术的体现!
【10月更文挑战第17天】在Java编程中,Map是一种重要的数据结构,用于存储键值对,并展现了设计艺术的精髓。本文深入剖析了Map的设计原理和使用技巧,包括基本概念、设计艺术(如哈希表与红黑树的空间时间权衡)、以及使用技巧(如选择合适的实现类、避免空指针异常等),帮助读者更好地理解和应用Map。
91 3
|
13天前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
35 6
|
12天前
|
存储 缓存 安全
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见。本文介绍了使用 `File.createTempFile` 方法和自定义创建临时文件的两种方式,详细探讨了它们的使用场景和注意事项,包括数据缓存、文件上传下载和日志记录等。强调了清理临时文件、确保文件名唯一性和合理设置文件权限的重要性。
29 2
|
12天前
|
Java
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式。本文介绍了 Streams 的基本概念和使用方法,包括创建 Streams、中间操作和终端操作,并通过多个案例详细解析了过滤、映射、归并、排序、分组和并行处理等操作,帮助读者更好地理解和掌握这一重要特性。
21 2
|
16天前
|
存储 分布式计算 Java
存算分离与计算向数据移动:深度解析与Java实现
【11月更文挑战第10天】随着大数据时代的到来,数据量的激增给传统的数据处理架构带来了巨大的挑战。传统的“存算一体”架构,即计算资源与存储资源紧密耦合,在处理海量数据时逐渐显露出其局限性。为了应对这些挑战,存算分离(Disaggregated Storage and Compute Architecture)和计算向数据移动(Compute Moves to Data)两种架构应运而生,成为大数据处理领域的热门技术。
38 2
|
21天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
22天前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
29 4