建造者模式实例数据拼接 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();
    }
}
目录
相关文章
|
28天前
|
XML 数据采集 API
用Lxml高效解析XML格式数据:以天气API为例
免费Python教程:实战解析中国天气网XML数据,详解Lxml库高效解析技巧、XPath用法、流式处理大文件及IP封禁应对策略,助你构建稳定数据采集系统。
144 0
|
2月前
|
存储 Java 关系型数据库
Java 项目实战基于面向对象思想的汽车租赁系统开发实例 汽车租赁系统 Java 面向对象项目实战
本文介绍基于Java面向对象编程的汽车租赁系统技术方案与应用实例,涵盖系统功能需求分析、类设计、数据库设计及具体代码实现,帮助开发者掌握Java在实际项目中的应用。
90 0
|
2月前
|
Java API 开发工具
【Azure Developer】Java代码实现获取Azure 资源的指标数据却报错 "invalid time interval input"
在使用 Java 调用虚拟机 API 获取指标数据时,因本地时区设置非 UTC,导致时间格式解析错误。解决方法是在代码中手动指定时区为 UTC,使用 `ZoneOffset.ofHours(0)` 并结合 `withOffsetSameInstant` 方法进行时区转换,从而避免因时区差异引发的时间格式问题。
180 3
|
2月前
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
192 16
|
3月前
|
数据采集 JSON Java
Java爬虫获取1688店铺所有商品接口数据实战指南
本文介绍如何使用Java爬虫技术高效获取1688店铺商品信息,涵盖环境搭建、API调用、签名生成及数据抓取全流程,并附完整代码示例,助力市场分析与选品决策。
|
3月前
|
数据采集 存储 前端开发
Java爬虫性能优化:多线程抓取JSP动态数据实践
Java爬虫性能优化:多线程抓取JSP动态数据实践
|
4月前
|
安全 Java 测试技术
Java 大学期末实操项目在线图书管理系统开发实例及关键技术解析实操项目
本项目基于Spring Boot 3.0与Java 17,实现在线图书管理系统,涵盖CRUD操作、RESTful API、安全认证及单元测试,助力学生掌握现代Java开发核心技能。
180 0
|
5月前
|
存储 算法 Java
【Java实例-智慧牌局】Java实现赌桌上的21点
游戏规则:游戏开始时,玩家和庄家各获得两张牌,玩家可以看到自己手中的两张牌以及庄家的一张明牌。玩家需要根据手中的牌面总和,选择“要牌”(Hit)以获取更多牌,或“停牌”(Stand)停止要牌。如果玩家的牌面总和超过21点,即为爆牌,玩家立即输掉游戏。若玩家选择停牌,庄家则开始行动,其策略是当牌面总和小于17点时必须继续要牌。若庄家牌面总和超过21点,则庄家爆牌,玩家获胜。若双方均未爆牌,最终比较牌面总和,更接近21点的一方获胜;若牌面总和相同,则游戏以平局结束。
81 0
|
5月前
|
XML 存储 数据格式
抖音卡片链接生成器,xml卡片数据支持快手,通过XPOSED实现制作
本项目介绍抖音/快手卡片链接生成技术,包含技术原理与核心功能实现。通过Xposed框架Hook目标APP关键方法,自定义卡片生成与跳转逻辑。卡片数据以XML格式存储,便于解析和跨平台使用。提供完整代码示例,涵盖Xposed模块配置、XML数据结构、Hook实现及卡片生成器核心类。下载地址:https://www.pan38.com/share.php?code=DuNzA,提取码:8888(仅供学习参考)。
|
5月前
|
Java 开发者
【Java实例-英雄对战】Java战斗之旅,既分胜负也决生死
游戏规则:在“英雄对战”中,玩家和敌人轮流选择行动,目标是在对方生命值归零前将其击败。游戏开始时,玩家和敌人都有100生命值。每回合,玩家可以选择“攻击”,“追击”,“闪避反击”这三种行动之一。
68 0