Java生成XML文件
我们在数据库中的数据可以将其提取出来生成XML文件,方便传输。例如数据库中有Admin这张表:

我们写一个java类表示admin数据:
package xmlDom.vo; import java.io.Serializable;
import java.util.Date;
import java.util.List; public class Admin implements Serializable
{
private String aid;
private String password;
private Integer rid;
private Integer type;
private Date lastdate;
private Integer flag ; public Integer getRid()
{
return rid;
}
public void setRid(Integer rid)
{
this.rid = rid;
}
public String getAid()
{
return aid;
}
public void setAid(String aid)
{
this.aid = aid;
}
public String getPassword()
{
return password;
}
public void setPassword(String password)
{
this.password = password;
}
public Integer getType()
{
return type;
}
public void setType(Integer type)
{
this.type = type;
}
public Date getLastdate()
{
return lastdate;
}
public void setLastdate(Date lastdate)
{
this.lastdate = lastdate;
}
public Integer getFlag()
{
return flag;
}
public void setFlag(Integer flag)
{
this.flag = flag;
} }
然后通过JDBC 将表中的数据转换成一个链表:
package xmlDom.dbc; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException; public class DatabaseConnection
{
private static final String MYSQLDRIVER = "org.gjt.mm.mysql.Driver";
private static final String MYSQLURL = "jdbc:mysql://localhost:3306/hrdb";
private static final String USERNAME = "root";
private static final String PASSWORD = "admin"; private Connection conn; public DatabaseConnection()
{
try
{
Class.forName(MYSQLDRIVER);
this.conn = DriverManager.getConnection(MYSQLURL, USERNAME, PASSWORD);
} catch (Exception e)
{
e.printStackTrace();
}
} public Connection getConnection() throws Exception
{
if (null != this.conn)
return this.conn;
else
throw new Exception("获取数据库连接失败");
} public void close()
{
if (null != this.conn)
{
try
{
this.conn.close();
} catch (SQLException e)
{
e.printStackTrace();
}
}
}
}
public static List<Admin> loadFromDB() throws Exception
{
List<Admin> allAdmins = new ArrayList<Admin>(); DatabaseConnection dbc = new DatabaseConnection();
Connection conn = dbc.getConnection();
PreparedStatement ps = conn.prepareStatement("SELECT aid,rid,type,lastdate,flag FROM admin");
ResultSet rs = ps.executeQuery();
while(rs.next())
{
Admin vo = new Admin(); vo.setAid(rs.getString("aid"));
vo.setRid(rs.getInt("rid"));
vo.setType(rs.getInt("type"));
vo.setLastdate(rs.getDate("lastdate"));
vo.setFlag(rs.getInt("flag")); allAdmins.add(vo);
} return allAdmins;
}
然后将该链表转换成内存中的XML结构:
public static Document getDocument( List<Admin> allAdmins) throws Exception
{
DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = dbfactory.newDocumentBuilder();
Document document = documentBuilder.newDocument(); Element root = document.createElement("admins"); for(Admin item : allAdmins)
{
Element admin = document.createElement("admin");
admin.setAttribute("aid", item.getAid()); Element rid = document.createElement("rid");
rid.appendChild(document.createTextNode(String.valueOf(item.getRid()))); Element type = document.createElement("type");
type.appendChild(document.createTextNode(String.valueOf(item.getType()))); Element lastdate = document.createElement("lastdate");
lastdate.appendChild(document.createTextNode(String.valueOf(item.getLastdate()))); Element flag = document.createElement("flag");
flag.appendChild(document.createTextNode(String.valueOf(item.getFlag()))); admin.appendChild(rid);
admin.appendChild(type);
admin.appendChild(lastdate);
admin.appendChild(flag); root.appendChild(admin);
} document.appendChild(root); return document;
}
然后将该内存的XML保存到本地中:
public static void main(String[] args) throws Exception
{
List<Admin> allAdmins = loadFromDB();
Document document = getDocument(allAdmins); Source source = new DOMSource(document);
StreamResult stream = new StreamResult(new FileOutputStream(new File("C:\\D\\code\\resource\\admins.xml")));
TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer trans = transFactory.newTransformer();
trans.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
trans.transform(source, stream); System.out.println("main done//~~");
}
也可以用下面代码把xml文件加载到内存中:
public static Document loadFromFile(String path) throws Exception
{
Document document = null;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
document = builder.parse(new File(path));
return document;
}
Java生成XML文件的更多相关文章
- java 生成xml文件
这里也使用的是import org.w3c.dom.Document; 首先创建document对象,给该对象赋值,然后将document对象使用transformer的transformer转换方法 ...
- Java生成XML文件与XML文件的写入
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6651643.html 既然能在代码中解析XML文档获取数据,当然也能通过代码动态生成XML文档了. 与解析X ...
- 利用oxygen编辑并生成xml文件,并使用JAVA的JAXB技术完成xml的解析
首先下载oxygen软件(Oxygen XML Editor),目前使用的是试用版(可以安装好软件以后get trial licence,获得免费使用30天的权限,当然这里鼓励大家用正版软件!!!) ...
- Java&Xml教程(四)使用DOM方式生成XML文件
在前面的教程中,我们学习了使用DOM解析方式读取和修改XML文件内容,今天我们来学习如何使用DOM解析机制生成XML文件. 下面是我们对要生成的XML文件的具体要求: 1.根节点元素为"Em ...
- java 编程基础:注解(Annotation Processing Tool)注解处理器 利用注解解读类属性生成XML文件
APT的介绍: APT(Annotation Processing Tool)是一种注解处理工具,它对源代码文件进行检测,并找出源文件所包含的注解信息,然后针对注解信息进行额外的处理. 使用APT工具 ...
- Java中使用DOM4J来生成xml文件和解析xml文件
一.前言 现在有不少需求,是需要我们解析xml文件中的数据,然后导入到数据库中,当然解析xml文件也有好多种方法,小编觉得还是DOM4J用的最多最广泛也最好理解的吧.小编也是最近需求里遇到了,就来整理 ...
- Android 使用xml序列化器生成xml文件
在<Android 生成xml文件>一文中使用流的形式写入xml格式文件,但是存在一定的问题,那就是在短信内容中不能出现<>之类的括号,本文使用xml序列化器来解决 xml序列 ...
- Java 创建xml文件和操作xml数据
java中的代码 import java.io.File; import java.io.StringWriter; import javax.xml.parsers.DocumentBuilder; ...
- java 读取XML文件作为配置文件
首先,贴上自己的实例: XML文件:NewFile.xml(该文件与src目录同级) <?xml version="1.0" encoding="UTF-8&quo ...
随机推荐
- 进入meta模式关闭背光灯
1. 修改文件: mediatek/platform/mt6582/lk/boot_mode.c 2. 修改内容: boot_mode_select()函数: mt65xx_blacklight_of ...
- C++学习笔记31:术语翻译
reference:引用 dereference:引领,好于"解引用" type:型式,好于"类型" int:整数型式,简称整型 class:类型式,简称类型 ...
- Eclipse vs. IDEA快捷键对比大全
原文链接: http://blog.csdn.net/dc_726 花了一天时间熟悉IDEA的各种操作,将各种快捷键都试了一下,感觉很是不错!于是就整理了一下我经常用的一些Eclipse快捷键与IDE ...
- sudo add-apt-repository no found解决方法
sudo apt-get install python-software-propertiessudo apt-get install software-properties-common
- MSP430单片机的两种SPI总线实现方式
MSP430单片机上的SPI总线的实现方式分为两种:硬件实现和软件实现. 二者的抽象层次不同,硬件实现方式下程序员只需要完成总线协议的寄存器层,即一字节(char,8位二进制)数据,而软件实现方式下程 ...
- 未能加载文件或程序集“AspNetPager”或它的某一个依赖项。参数错误(转)
未能加载文件或程序集“AspNetPager”或它的某一个依赖项.参数错误. 看你的的开发框架用的是多少的2.0, 3.0, 3.5, 4.0 那么删除的框架的文件夹也相对应的变化 删除 C:\W ...
- Xcode 6制作动态及静态Framework
技术交流新QQ群:414971585 有没有写SDK或者要将一些常用的工具类做成Framework的经历? 你或许自己写脚本完成了这项工作,相信也有很多的人使用 iOS-Universal-Frame ...
- CE取系统时间值
取时间值: void GetTime() { //取时间值 SYSTEMTIME st = {}; // 时间结构体 GetLocalTime(&st); // 把获取的系统时间信息存储到SY ...
- [NOIP2011] 观光公交(贪心)
题目描述 风景迷人的小城Y 市,拥有n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务.观光公交车在第 0 分钟出现在 1号景点,随后依次前往 2 ...
- linux find命令
Linux中find常见用法示例 ·find path -option [ -print ] [ -exec -ok command ] {} \; find命令的参数 ...