xml文件生成方式一(字符串拼接,将多实体类对象写入xml文件)
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文件)的更多相关文章
- Power Designer导出实体类和NHibernate xml文件
Power Designer导出实体类和NHibernate xml文件 今天研究了一下通过PowerDesigner生成实体类和NHibernate所需要的xml文件,方法是通过Power Desi ...
- 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 ...
- Java基础之序列化对象——将对象写入到文件中(SerializeObjects)
控制台程序. 首先定义一个含有任意不同数据类型域的可序列化类: import java.io.Serializable; public class Junk implements Serializab ...
- 使用 SQL的 for xml path来进行字符串拼接
本篇主要讲怎么利用SQL的FOR XML PATH 参数来进行字符串拼接,FOR XML PATH的用法很简单,它会以xml文件的形式来返回数据. 我的讲解步骤: 1:构造初始数据 2:提出问题 3: ...
- Java工具类_表结构自动生成对应的实体类、Mapper.xml文件、Dao类
import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWrit ...
- .NET解析xml字符串,通过反射给实体类对象赋值,获取实体类数据列表
/// <summary> /// 解析xml字符串 转换为实体类列表数据 /// </summary> /// <param name="xmlStr&quo ...
- MyBatis从入门到精通:第一章实体类与Mapper.xml文件
实体类: package tk.mybatis.simple.model; public class Country { public Long getId() { return id; } publ ...
- 使用MyEclipse生成实体类和Hibernate映射文件
1.打开MyEclipse DataBase Explorer. 如上图,点击图中2便可切换到MyEclipse DataBase Explorer,若没有该图标,则点击图中1,便可选择MyEclip ...
- 通用类 对象和XML互转
public class XMLHealper { /// <summary> /// 将自定义对象序列化为XML字符串 /// </summary> /// <para ...
随机推荐
- Linq学习系列-----1.1 Lambda表达式介绍
1.1 Lambda表达式介绍 下图就是一个典型的Lambda表达式. instance:输入参数 =>:Lambda操作符 instance.MemoryCount>=20*1024 ...
- c语言的内存分析
1. 进制 1. 什么是进制 ● 是一种计数的方式,数值的表示形式 汉字:十一 十进制:11 二进制:1011 八进制:13 ● 多种进制:十进制.二进制.八进制.十六进制.也就是说,同一个 ...
- 2712:细菌繁殖-poj
2712:细菌繁殖 总时间限制: 1000ms 内存限制: 65536kB 描述 一种细菌的繁殖速度是每天成倍增长.例如:第一天有10个,第二天就变成20个,第三天变成40个,第四天变成80个,… ...
- ThinkPHP中处理Layout模板的问题
ThinkPHP中的模板引擎内置了布局模板功能支持,可以方便实现嵌套. 其中有两种布局方式,一种为以布局模板为入口的布局方式,但是需要开启LAYOUT_ON 参数(默认不开启) 并且设置布局入口文件名 ...
- 实践作业2:黑盒测试实践——安装配置测试工具 Day 3
安装配置Katalon Studio工具 1.找下载Katalon链接,需要有效电子邮件才能激活Katalon账户,在我的Gmail里注册. 2.选择下载版本 3.下载完成后 ,转到计算机上的文件夹, ...
- 数据结构与算法(C/C++版)【栈与队列】
第三章<栈与队列> (一)栈简介 栈(Stack):只允许在一端进行插入或删除操作的线性表.首先栈是一种线性表,但是限定这种线性表只能在某一端进行插入和删除操作栈顶(top):线性表允许 ...
- gem install报错
[root@app-test ruby-2.2.3]# gem install capistrano -v 2.15 ERROR: While executing gem ... (Gem::Rem ...
- BST性能分析&改进思路——平衡与等价
极端退化 前面所提到的二叉搜索树,已经为我们对数据集进行高效的静态和动态操作打开了一扇新的大门.正如我们所看到的,BST从策略上可以看作是将之前的向量(动态数组)和链表结构的优势结合起来,不过多少令我 ...
- JAVA8之lambda表达式具体解释,及stream中的lambda使用
前言: 本人也是学习lambda不久,可能有些地方描写叙述有误,还请大家谅解及指正! lambda表达式具体解释 一.问题 1.什么是lambda表达式? 2.lambda表达式用来干什么的? 3.l ...
- HDU 1160 FatMouse's Speed (最长有序的上升子序列)
题意:给你一系列个w,s.要你找到最长的n使得 W[m[1]] < W[m[2]] < ... < W[m[n]] and S[m[1]] > S[m[2]] > ... ...