1.xml文件生成,拼接字符串使用StringBuffer或StringBuilder

2.拼接好后写入文件即可,将多个实体类写入xml文件

3.这种方式比较简单,但是操作也比较麻烦

4.下面是我的代码:

@1测试代码,数据是模拟的productXmlFile是测试类

package operator.hui.xml;

import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; /*
* 生成xml文件的类
*/
public class CreateXmlFile { public static void main(String[] args) {
// TODO Auto-generated method stub
List<Sms> lists = new ArrayList<Sms>();
for (int i = 0; i < 10; i++) {
Sms s = new Sms();
s.setAddr("1870087098"+i);
s.setContent("小明,你女朋友来了");
s.setDate("2000"+"-"+i+"-"+i+2+" "+"12:16:37");
lists.add(s);
}
productXmlFile("f://sms.xml",lists);
test(); } private static void test() {
// TODO Auto-generated method stub
System.out.println(CreateXmlFile.class.getSimpleName());
} /*
* 生成名为name的根节点为root的xml文件,这个文件存储lists这个集合的数据,path为文件路径
*
*/
public static void productXmlFile(String path,List<Sms> lists){ StringBuffer bf = new StringBuffer();
//组拼xml文件头
bf.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
bf.append("\n");
//组拼根节点
bf.append("<smss>");
bf.append("\n");
for (Iterator iterator = lists.iterator(); iterator.hasNext();) {
Sms sms = (Sms) iterator.next();
System.out.println(sms.getAddr());
sms.productPoint(bf); }
bf.append("\n");
bf.append("</smss>"); File f = new File(path);
try {
FileOutputStream fos = new FileOutputStream(f);
fos.write(bf.toString().getBytes("utf8"));
fos.flush();
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }

@2javabean类Sms,实现了生成节点的接口

package operator.hui.xml;

import java.util.Date;

/**
* 短信数据封装类
* @author Administrator
*
*/
public class Sms implements ProductRuler{ //短信来源
private String addr;
//短信内容
private String content;
//短息日期
private String date;
public Sms() {
// TODO Auto-generated constructor stub
} public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
} @Override
public void productPoint(StringBuffer sb) {
sb.append("\t");
sb.append("<"+this.getClass().getSimpleName()+">");
sb.append("\n");
sb.append("\t\t");
sb.append("<addr>");
sb.append(this.addr);
sb.append("</addr>");
sb.append("\n");
sb.append("\t\t");
sb.append("<content>");
sb.append(this.content);
sb.append("</content>");
sb.append("\n");
sb.append("\t\t");
sb.append("<date>");
sb.append(this.date);
sb.append("</date>");
sb.append("\n");
sb.append("\t");
sb.append("</"+this.getClass().getSimpleName()+">");
sb.append("\n"); } }

@3生成节点的接口,只有一个方法,

package operator.hui.xml;

/*
* 具体的xml内部节点生成规则
*/
public interface ProductRuler { /*在sb中生成节点*/
void productPoint(StringBuffer sb); }

@4运行结果:

Console控制台

生成的xml文件

生成的 文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<smss>
<Sms>
<addr>18700870980</addr>
<content>小明,你女朋友来了</content>
<date>2000-0-010 12:16:37</date>
</Sms>
<Sms>
<addr>18700870981</addr>
<content>小明,你女朋友来了</content>
<date>2000-1-110 12:16:37</date>
</Sms>
<Sms>
<addr>18700870982</addr>
<content>小明,你女朋友来了</content>
<date>2000-2-210 12:16:37</date>
</Sms>
<Sms>
<addr>18700870983</addr>
<content>小明,你女朋友来了</content>
<date>2000-3-310 12:16:37</date>
</Sms>
<Sms>
<addr>18700870984</addr>
<content>小明,你女朋友来了</content>
<date>2000-4-410 12:16:37</date>
</Sms>
<Sms>
<addr>18700870985</addr>
<content>小明,你女朋友来了</content>
<date>2000-5-510 12:16:37</date>
</Sms>
<Sms>
<addr>18700870986</addr>
<content>小明,你女朋友来了</content>
<date>2000-6-610 12:16:37</date>
</Sms>
<Sms>
<addr>18700870987</addr>
<content>小明,你女朋友来了</content>
<date>2000-7-710 12:16:37</date>
</Sms>
<Sms>
<addr>18700870988</addr>
<content>小明,你女朋友来了</content>
<date>2000-8-810 12:16:37</date>
</Sms>
<Sms>
<addr>18700870989</addr>
<content>小明,你女朋友来了</content>
<date>2000-9-910 12:16:37</date>
</Sms> </smss>

xml文件生成方式一(字符串拼接,将多实体类对象写入xml文件)的更多相关文章

  1. Power Designer导出实体类和NHibernate xml文件

    Power Designer导出实体类和NHibernate xml文件 今天研究了一下通过PowerDesigner生成实体类和NHibernate所需要的xml文件,方法是通过Power Desi ...

  2. c#实例化继承类,必须对被继承类的程序集做引用 .net core Redis分布式缓存客户端实现逻辑分析及示例demo 数据库笔记之索引和事务 centos 7下安装python 3.6笔记 你大波哥~ C#开源框架(转载) JSON C# Class Generator ---由json字符串生成C#实体类的工具

    c#实例化继承类,必须对被继承类的程序集做引用   0x00 问题 类型“Model.NewModel”在未被引用的程序集中定义.必须添加对程序集“Model, Version=1.0.0.0, Cu ...

  3. Java基础之序列化对象——将对象写入到文件中(SerializeObjects)

    控制台程序. 首先定义一个含有任意不同数据类型域的可序列化类: import java.io.Serializable; public class Junk implements Serializab ...

  4. 使用 SQL的 for xml path来进行字符串拼接

    本篇主要讲怎么利用SQL的FOR XML PATH 参数来进行字符串拼接,FOR XML PATH的用法很简单,它会以xml文件的形式来返回数据. 我的讲解步骤: 1:构造初始数据 2:提出问题 3: ...

  5. Java工具类_表结构自动生成对应的实体类、Mapper.xml文件、Dao类

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

  6. .NET解析xml字符串,通过反射给实体类对象赋值,获取实体类数据列表

    /// <summary> /// 解析xml字符串 转换为实体类列表数据 /// </summary> /// <param name="xmlStr&quo ...

  7. MyBatis从入门到精通:第一章实体类与Mapper.xml文件

    实体类: package tk.mybatis.simple.model; public class Country { public Long getId() { return id; } publ ...

  8. 使用MyEclipse生成实体类和Hibernate映射文件

    1.打开MyEclipse DataBase Explorer. 如上图,点击图中2便可切换到MyEclipse DataBase Explorer,若没有该图标,则点击图中1,便可选择MyEclip ...

  9. 通用类 对象和XML互转

    public class XMLHealper { /// <summary> /// 将自定义对象序列化为XML字符串 /// </summary> /// <para ...

随机推荐

  1. 深入理解Java内置锁和显式锁

    synchronized and Reentrantlock 多线程编程中,当代码需要同步时我们会用到锁.Java为我们提供了内置锁(synchronized)和显式锁(ReentrantLock)两 ...

  2. SparseArray,SparseBooleanArray和SparseIntArray

    package android.util; import com.android.internal.util.ArrayUtils; /** * SparseArrays 利用integer去管理ob ...

  3. 异常:This application has no explicit mapping for /error, so you are seeing this as a fallback.

    出现这个异常说明了跳转页面的url无对应的值. 原因1: Application启动类的位置不对.要将Application类放在最外侧,即包含所有子包 原因:spring-boot会自动加载启动类所 ...

  4. 关于javascript removeChild的那些事

    关于javascript removeChild的那些事 今天给removeChild搞死了,弄了几个小时,上代码 <ul id="myList"> <li> ...

  5. Web攻防之暴力破解(何足道版)

    原创文章 原文首发我实验室公众号 猎户安全实验室 然后发在先知平台备份了一份 1 @序 攻防之初,大多为绕过既有逻辑和认证,以Getshell为节点,不管是SQL注入获得管理员数据还是XSS 获得后台 ...

  6. 在LwIP 协议栈移植 Snap 7

    本文欢迎引用,转载. 引用,转载请标明出处! 调试完毕源码将上传到GitHub 为了嵌入式系统与STEP 7 PLC 通过S7 协议通讯,尝试移植 Snap 7 到STM32F407 cpu 上. 今 ...

  7. Pyhton函数篇(一)之函数中的形参与实参

    1:什么是函数 函数其实就是带名字的代码块,用于完成一些具体的工作.如果我们在写一段程序的时候,需要多次用到同样的一个功能,如果每次都要重复写相同的代码,不仅会增加我们的代码量,更会让我们写出的代码让 ...

  8. margin、padding单位百分比

    年前做了一个测试题 https://www.wenjuan.com/s/VjaEva/,里面有一道题目涉及到了margin和padding单位为百分比的情况.写出来记录一下以防止自己忘记. <! ...

  9. RaspberryPi2B使用bcm2835c库控制GPIO

    RaspberryPi2B使用bcm2835c库控制GPIO 网上有很多RaspberryPi控制GPIO的方法,有Python.WiringPi.bcm2835 C library 使用bcm283 ...

  10. AFNetworking提示3840 Unescaped control character around character XXX

    处理办法:找到AFNetworking包中AFURLResponseSerialization.m文件在第250行修改代码如下: if (data.length > 0 && ! ...