爪哇国新游记之十三----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; ...
随机推荐
- java线程基本知识
如何去定义一个线程?(三种方式) 1.Thread:继承这个类,然后重写run方法:将业务逻辑或任务写到run方法中,然后调用start来启动线程: 2.Runnable: 实现这个接口, ...
- JQuery动态添加多个tab页标签
jQuery是一个兼容多浏览器的js库,核心理念是write less,do more(写的更少,做的更多),jQuery使用户能更方便地处理HTML documents.events.实现动画效果, ...
- ThinkPHP 多数据库自动连接设计
配置文件 database.php <?php return array( 'dbname1'=>'mysql://root:root@localhost/dbname1#utf8', ' ...
- 洛谷P1196 [NOI2002] 银河英雄传说
#include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #includ ...
- 洛谷——P1165 日志分析
P1165 日志分析 题目描述 M 海运公司最近要对旗下仓库的货物进出情况进行统计.目前他们所拥有的唯一记录就是一个记录集装箱进出情况的日志.该日志记录了两类操作:第一类操作为集装箱入库操作,以及该次 ...
- HDU 6107 Typesetting (倍增)
Typesetting Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
- 解决phpStudy启动网站警告问题
在用phpStudy的时候,在页面中会有一些警告 notice:Undefined variable... notice:Undefined index... 在php.ini里面找到 display ...
- 【HDU 5730】Shell Necklace
http://acm.hdu.edu.cn/showproblem.php?pid=5730 分治FFT模板. DP:\(f(i)=\sum\limits_{j=0}^{i-1}f(j)\times ...
- 【BZOJ 2212】【POI 2011】Tree Rotations
http://www.lydsy.com/JudgeOnline/problem.php?id=2212 自下而上贪心. 需要用权值线段树来记录一个权值区间内的出现次数. 合并线段树时统计逆序对的信息 ...
- 【树形dp】Distance in Tree
[CF161.D] Distance in Tree time limit per test 3 seconds memory limit per test 512 megabytes A tree ...