建造者模式实例数据拼接 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();
    }
}
目录
相关文章
|
2天前
|
Java
【Java开发指南 | 第二十一篇】Java流之文件
【Java开发指南 | 第二十一篇】Java流之文件
12 0
|
2天前
|
Java Android开发
java利用xml-rpc协议操作wordpress博客
java利用xml-rpc协议操作wordpress博客
12 1
|
2天前
|
XML 前端开发 数据格式
BeautifulSoup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据
【5月更文挑战第10天】BeautifulSoup 是 Python 的一个库,用于解析 HTML 和 XML 文件,即使在格式不规范的情况下也能有效工作。通过创建 BeautifulSoup 对象并使用方法如 find_all 和 get,可以方便地提取和查找文档中的信息。以下是一段示例代码,展示如何安装库、解析 HTML 数据以及打印段落、链接和特定类名的元素。BeautifulSoup 还支持更复杂的查询和文档修改功能。
22 1
|
2天前
|
Java
java中递归实例
java中递归实例
18 0
|
1天前
|
消息中间件 Java Kafka
Java大文件排序(有手就能学会),kafka面试题2024
Java大文件排序(有手就能学会),kafka面试题2024
|
2天前
|
安全 Java 开发者
Java一分钟之-文件与目录操作:Path与Files类
【5月更文挑战第13天】Java 7 引入`java.nio.file`包,`Path`和`Files`类提供文件和目录操作。`Path`表示路径,不可变。`Files`包含静态方法,支持创建、删除、读写文件和目录。常见问题包括:忽略异常处理、路径解析错误和权限问题。在使用时,注意异常处理、正确格式化路径和考虑权限,以保证代码稳定和安全。结合具体需求,这些方法将使文件操作更高效。
11 2
|
2天前
|
Java
【Java开发指南 | 第九篇】访问实例变量和方法、继承、接口
【Java开发指南 | 第九篇】访问实例变量和方法、继承、接口
14 4
|
2天前
|
SQL Java
java处理数据查看范围
java处理数据查看范围
|
2天前
|
Java 开发者
Java一分钟之-Java IO流:文件读写基础
【5月更文挑战第10天】本文介绍了Java IO流在文件读写中的应用,包括`FileInputStream`和`FileOutputStream`用于字节流操作,`BufferedReader`和`PrintWriter`用于字符流。通过代码示例展示了如何读取和写入文件,强调了常见问题如未关闭流、文件路径、编码、权限和异常处理,并提供了追加写入与读取的示例。理解这些基础知识和注意事项能帮助开发者编写更可靠的程序。
17 0
|
2天前
|
Java
代码实例演示Java字符串与输入流互转
代码实例演示Java字符串与输入流互转