建造者模式实例数据拼接 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();
    }
}
目录
相关文章
|
4天前
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
|
5天前
|
Java
java网络编程 UDP通信协议实现局域网内文件的发送和接收
java网络编程 UDP通信协议实现局域网内文件的发送和接收
java网络编程 UDP通信协议实现局域网内文件的发送和接收
|
7天前
|
存储 Java 数据库连接
Java类文件结构及类加载机制
该文章主要讨论了Java类文件的结构以及Java类的加载机制,并提到了双亲委派模型的相关内容。
Java类文件结构及类加载机制
|
8天前
|
Java PHP 数据安全/隐私保护
Java——IDEA如何运行单个文件
Java——IDEA如何运行单个文件
16 1
Java——IDEA如何运行单个文件
|
4天前
|
存储 安全 Java
"Java编码魔法:揭秘图片与文件的Base64神秘转换术,让数据在指尖跳跃!"
【8月更文挑战第16天】Base64编码在Java开发中常用于将二进制数据如图片转换为ASCII字符串以便传输。编码使用64个字符及等号填充,每3字节数据编码为4个字符。Java利用`java.util.Base64`类实现此功能:读取图片或文件为字节数组后进行编码。解码时将Base64字符串还原为字节数组并写入文件。需注意编码效率降低、不提供安全性及特殊字符兼容性等问题。掌握这些技巧有助于解决Web开发中的数据传输需求。
17 4
|
5天前
|
Java
java中实现File文件的重命名(renameTo)、将文件移动到其他目录下、文件的复制(copy)、目录和文件的组合(更加灵活方便)
这篇文章介绍了Java中使用`renameTo()`、`Files.copy()`等方法对文件进行重命名、移动和复制的操作,并提供了代码实例和测试效果。
java中实现File文件的重命名(renameTo)、将文件移动到其他目录下、文件的复制(copy)、目录和文件的组合(更加灵活方便)
|
7天前
|
监控 Java
Java文件夹复制解决方案:优化大文件与大量数据的处理
Java中复制文件夹及其内容,尤其是当处理大文件或文件夹(如几个GB)时,需要特别注意内存使用和性能优化。以下是一个详细的指导,包括如何避免内存溢出异常,并确保复制过程的高效性。
15 1
|
9天前
|
消息中间件 负载均衡 Java
"Kafka核心机制揭秘:深入探索Producer的高效数据发布策略与Java实战应用"
【8月更文挑战第10天】Apache Kafka作为顶级分布式流处理平台,其Producer组件是数据高效发布的引擎。Producer遵循高吞吐、低延迟等设计原则,采用分批发送、异步处理及数据压缩等技术提升性能。它支持按消息键值分区,确保数据有序并实现负载均衡;提供多种确认机制保证可靠性;具备失败重试功能确保消息最终送达。Java示例展示了基本配置与消息发送流程,体现了Producer的强大与灵活性。
28 3
|
8天前
|
Java 应用服务中间件 PHP
PHP——调用java文件中的方法
PHP——调用java文件中的方法
19 0
PHP——调用java文件中的方法
|
5天前
|
Java 编译器 开发者
JDK8到JDK23版本升级的新特性问题之编写一个简单的module-info.java文件,如何实现
JDK8到JDK23版本升级的新特性问题之编写一个简单的module-info.java文件,如何实现