爪哇国新游记之十三----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; ...
随机推荐
- lvm笔记
安装LVMyum -y install lvm* 创建PV# pvcreate /dev/md5 /dev/sdf1 /dev/sdg 查看PV# pvdisplay 还可以使用命令pvs 和pvsc ...
- js禁止页面所有a链接访问
<script type="text/javascript"> var arr=document.getElementsByTagName("a") ...
- vmware漏洞之三——Vmware虚拟机逃逸漏洞(CVE-2017-4901)Exploit代码分析与利用
本文简单分析了代码的结构.有助于理解. 转:http://www.freebuf.com/news/141442.html 0×01 事件分析 2017年7月19 unamer在其github上发布了 ...
- CF1027C Minimum Value Rectangle【贪心/公式化简】
https://www.luogu.org/problemnew/show/CF1027C #include<cstdio> #include<string> #include ...
- 29、Flask实战第29天:cms用户名渲染和注销功能实现
这节来完成用户名渲染和注销的功能,目前用户名在前端页面是写死的,我们需要动态的展示出来 用户名渲染 实现用户名动态展示,其中一种方法就是在视图函数,根据session信息,获取到user id,通过该 ...
- angularjs学习笔记3-directive中scope的绑定修饰符
在angularjs中,一个directive返回一个对象,对象存在很多属性,并且可以在directive中自定义自己的scope,而使用自己的scope是为了防止一个directive被使用在多个地 ...
- 【stl小记】list
list相当于双向链表,所以快插快删比较方便(链式数据结构的性质),但是随机读取较慢 用一道luogu的水题做一做list,code如下 #include <cstdio> #includ ...
- 【BZOJ 3238】【AHOI 2013】差异
http://www.lydsy.com/JudgeOnline/problem.php?id=3238 后缀数组裸题但是\(5\times 10^5\)貌似常数有点大就过不了?(我的sa常数那么大想 ...
- 【计算几何】【预处理】【枚举】Urozero Autumn Training Camp 2016 Day 5: NWERC-2016 Problem K. Kiwi Trees
发现由于角的度数和边的长度有限制,那俩圆如果放得下的话,必然是塞在两个角里. 于是预处理n个圆心的位置(注意要判断那个圆会不会和其他的边界相交),然后n^2枚举俩角即可. #include<cs ...
- 【动态规划】POJ1664-放苹果
非常经典的划分数问题,即相当于把m个物体分成至多n组,求出分组总数. [思路]当前状态dp[i][j]表示将i个物体分成至多j组的分组总数.对于当前状态,有以下两种情形: (1)j组中有组为空,则这种 ...