爪哇国新游记之十三----XML文件读写
/**
* XML读写示例
* @author hx
*
*/
public class XmlReaderWriter{
/**
* 读取一个XML文件,返回一个雇员链表
* @param fileName
* @return
*/
public List<Employee> readXml(String fileName){
List<Employee> employees=new ArrayList<Employee>();
SAXReader reader = new SAXReader();
try {
Document document = reader.read(new File(fileName));
Element root = document.getRootElement();
List nodes = root.elements("employee");
for (Iterator it = nodes.iterator(); it.hasNext();) {
Employee employee=new Employee();
// 根节点下的雇员子节点
Element employeeElm = (Element) it.next();
// 获取雇员子节点的id属性
Attribute attribute=employeeElm.attribute("id");
employee.setId(Long.parseLong(attribute.getText()));// 将文本形式的long字符串还原成基本类型
// 获得雇员子节点的名称子节点
Element nameElm=employeeElm.element("name");
employee.setName(nameElm.getText());// 获取名称子节点的文字
// 获取雇员子节点的性别子节点的文字
employee.setMale(Boolean.parseBoolean(employeeElm.element("ismale").getText()));
// 将雇员信息放入链表
employees.add(employee);
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return employees;
}
/**
* 将一个雇员链表写入XML文档
* @param employees
* @param fileName
*/
public void writerToFile(List<Employee> employees,String fileName){
// 创建文档对象
Document document = DocumentHelper.createDocument();
// 创建根节点
Element root = document.addElement("employees");
for(Employee emp:employees){
// 创建employee节点
Element empElm = root.addElement("employee");
// 创建employee节点的id属性
empElm.addAttribute("id", String.valueOf(emp.getId()));
// 创建employee节点的子节点name
Element nameElm = empElm.addElement("name");
nameElm.setText(emp.getName());// 设置子节点的文字
// 创建employee节点的子节点ismale
Element ismaleElm = empElm.addElement("ismale");
ismaleElm.setText(String.valueOf(emp.isMale()));// 设置子节点的文字
}
// 将document文档对象写入文件
XMLWriter writer;
try {
writer = new XMLWriter(new FileWriter(fileName));
writer.write(document);
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args){
List<Employee> employees=new ArrayList<Employee>();
/*employees.add(new Employee(1,"Andy",true));
employees.add(new Employee(2,"Bill",false));
employees.add(new Employee(3,"Cindy",true));
employees.add(new Employee(4,"Doutglas",false));
XmlReaderWriter xmlReaderWriter=new XmlReaderWriter();
xmlReaderWriter.writerToFile(employees, "Employees20140724.xml");*/
XmlReaderWriter xmlReaderWriter=new XmlReaderWriter();
List<Employee> employee=xmlReaderWriter.readXml("Employees20140724.xml");
employee=null;
}
}
public class Employee{
private long id;
private String name;
private boolean isMale;
public Employee(){
}
public Employee(long id,String name,boolean isMale){
this.id=id;
this.name=name;
this.isMale=isMale;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public boolean isMale() {
return isMale;
}
public void setMale(boolean isMale) {
this.isMale = isMale;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
这个的主要目的是让学生掌握如何导入第三方包。
爪哇国新游记之十三----XML文件读写的更多相关文章
- 爪哇国新游记之二十八----从url指定的地址下载文件到本地
package download; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; ...
- 爪哇国新游记之三十四----Dom4j的XPath操作
Dom4j是Java访问XML的利器之一,另一个是JDom.记得当年因为粗掌握点JDomAPI但项目要求使用Dom4j还闹一阵情绪,现在看来真是没必要,只花一些时间成本就进去一个新世界绝对是值得做的一 ...
- 爪哇国新游记之二十九----访问URL获取输入流
代码: import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileWriter; import ...
- 爪哇国新游记之十四----初试JDBC
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import ...
- 爪哇国新游记之七----使用ArrayList统计水果出现次数
之前学习制作了DArray,了解ArrayList就容易了. /** * 用于存储水果名及数量 * */ public class Fruit{ private String name; public ...
- 爪哇国新游记之二----用于计算三角形面积的Point类和TAngle类
这次尝试用两个类完成一个面积计算任务: Point类代表平面上的点: public class Point { private float x; private float y; public Poi ...
- 爪哇国新游记之一----第一个类Cube
将这个类作为Java学习的第一个类,简单易懂易上手. /** * 正方体类 */ public class Cube { private int length;// 正方体边长 private sta ...
- 爪哇国新游记之二十二----排序判断重复时间复杂度为2n的位图法
import java.util.ArrayList; import java.util.List; /** * 位图法 * 用于整型数组判重复,得到无重复列表 * */ public class B ...
- 爪哇国新游记之十九----使用Stack检查数字表达式中括号的匹配性
/** * 辅助类 * 用于记载字符和位置 * */ class CharPos{ char c; int pos; public CharPos(char c,int pos){ this.c=c; ...
随机推荐
- 继续ajax长轮询解决方案--递归
如果使用for,会有一种情况发生,就是ajax的执行会大于其他的动作的执行,那么这样的一段代码就不能实现了 for(var i=0;i<20;i++){ console.log('你好') $. ...
- 四十二 常用内建模块 collections
collections是Python内建的一个集合模块,提供了许多有用的集合类. namedtuple 我们知道tuple可以表示不变集合,例如,一个点的二维坐标就可以表示成: >>> ...
- MS SQL Server迁移至Azure SQL
SQL Server的数据目前是存在于公司服务器的,现时需要将它迁移至Azure SQL 迁移分两种 数据库结构复制 数据库结构复制与数据迁移至Azure SQL 第1种方法针对的是将现有数据库创建新 ...
- 关于在windows下部署发布QT程序的总结
原文请看:http://www.cnblogs.com/javaexam2/archive/2011/05/18/2632916.html 关于在windows下部署发布QT程序的总结 2008-06 ...
- ZOJ 2967 Colorful Rainbows
暴力. 先删掉一些边,平行的线只保留$b$最大的.然后暴力,每次放入第$i$条边,和还没有被完全覆盖的边都算一遍,更新一下. #pragma comment(linker, "/STACK: ...
- SQLSEVER 中的那些键和约束
SQL Server中有五种约束类型,分别是 PRIMARY KEY约束.FOREIGN KEY约束.UNIQUE约束.DEFAULT约束.和CHECK约束.查看或者创建约束都要使用到 Microso ...
- AGC 012 D - Colorful Balls
题面在这里! 为什么atcoder都是神仙题啊qwq 首先发现如果要让 x,y 互换位置的话,要么通过他们直接换 (也就是x和y满足两种操作之一),要么间接换,通过一些其他的元素形如 x可以和 a[1 ...
- BZOJ 1430 小猴打架(prufer编码)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1430 [题目大意] 一开始森林里面有N只互不相识的小猴子,它们经常打架, 但打架的双方 ...
- 【二分】【线段树】hdu6070 Dirt Ratio
size(l,r)表示区间l,r权值的种类数,让你求min{size(l,r)/(r-l+1)}(1<=l<=r<=n). last[r]表示a[r]上一次出现的位置, 就是二分验证 ...
- 【思路】Gym - 101173F - Free Figurines
套娃形成一些链形结构,给你套娃的初始状态和目标状态,问你需要几步(将最外层套娃打开,以及将一整套套娃塞进一个空套娃都算一步)才能达到. 容易发现,只有每条链链尾的匹配段可以不拆,其他的都得拆开. #i ...