下载依赖 jar 包
dom4j-1.6.1.jar
jaxen-1.1-beta-6.jar
package com.xml;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import com.entity.Student;
public class TestTextXml {
//遍历
public static void testReader() {
SAXReader reader = new SAXReader();
try {
Document doc = reader.read(new File("student2.xml"));
List elementList = doc.selectNodes("/data/student");
for (Element element : elementList) {
Iterator childIter = element.elementIterator();
while (childIter.hasNext()) {
Element childElement = childIter.next();
System.out.println(childElement.getName() + "=" + childElement.getText());
}
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
//遍历
public static List testReader2() {
List studentList = new ArrayList();
SAXReader reader = new SAXReader();
try {
Document doc = reader.read(new File("student2.xml"));
List elementList = doc.selectNodes("/data/student");
for (Element element : elementList) {
Iterator childIter = element.elementIterator();
Student student = null;
while (childIter.hasNext()) {
if (student == null) {
student = new Student();
}
Element childElement = childIter.next();
String tag = childElement.getName();
if ("name".equals(tag)) {
student.setName(childElement.getText());
} else if ("age".equals(tag)) {
student.setAge(Integer.parseInt(childElement.getText()));
}
}
if (student != null) {
studentList.add(student);
student = null;
}
}
} catch (DocumentException e) {
e.printStackTrace();
}
return studentList;
}
//添加
public static void testAdd() {
SAXReader reader = new SAXReader();
XMLWriter writer = null;
try {
Document doc = reader.read(new File("student2.xml"));
Element root = doc.getRootElement();
Element studentElement = root.addElement("student");
Element nameElement = studentElement.addElement("name");
nameElement.setText("王涛");
Element ageElement = studentElement.addElement("age");
ageElement.setText("26");
OutputFormat format = OutputFormat.createPrettyPrint();
writer = new XMLWriter(new FileWriter("student2.xml"), format);
writer.write(doc);
writer.flush();
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//修改
public static void testUpdate(Student item) {
SAXReader reader = new SAXReader();
XMLWriter writer = null;
try {
Document doc = reader.read(new File("student2.xml"));
List elementList = doc.selectNodes("/data/student");
for (Element element : elementList) {
Iterator childIter = element.elementIterator();
boolean isUpdate = false;
while (childIter.hasNext()) {
Element childElement = childIter.next();
String tag = childElement.getName();
if ("name".equals(tag) && item.getName().equals(childElement.getText())) {
isUpdate = true;
}
if (isUpdate) {
if ("age".equals(tag)) {
childElement.setText(String.valueOf(item.getAge()));
}
}
}
if (isUpdate) {
isUpdate = false;
break;
}
}
OutputFormat format = OutputFormat.createPrettyPrint();
writer = new XMLWriter(new FileWriter("student2.xml"), format);
writer.write(doc);
writer.flush();
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//删除
public static void testDelete(String name) {
SAXReader reader = new SAXReader();
XMLWriter writer = null;
try {
Document doc = reader.read(new File("student2.xml"));
List elementList = doc.selectNodes("/data/student");
for (Element element : elementList) {
Iterator childIter = element.elementIterator();
while (childIter.hasNext()) {
Element childElement = childIter.next();
String tag = childElement.getName();
if ("name".equals(tag) && name.equals(childElement.getText())) {
element.getParent().remove(element);
}
}
}
OutputFormat format = OutputFormat.createPrettyPrint();
writer = new XMLWriter(new FileWriter("student2.xml"), format);
writer.write(doc);
writer.flush();
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//将数据库数据 转换成 xml 文件
public static void testGenerateXML(List studentList) {
Writer writer = null;
try {
writer = new FileWriter("student3.xml");
StringBuilder sb = new StringBuilder();
sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
sb.append("\n");
for (Student student : studentList) {
sb.append("\n");
sb.append("" + student.getName() + "\n");
sb.append("" + student.getAge() + "\n");
sb.append("\n");
}
sb.append("");
writer.write(sb.toString());
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
//testAdd();
//testUpdate(new Student("李军",29));
testDelete("王涛");
List studentList = testReader2();
for (Student student : studentList) {
System.out.println(student.getName() + "," + student.getAge());
}
testGenerateXML(studentList);
}
}
package com.entity;
public class Student {
private String name;
private int age;
private int money;
private String address;
private Course course;
public Student() {
super();
System.out.println("student");
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
System.out.println(this.name + "," + this.age);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
private String getHello() {
return "hello";
}
}
student2.xml 文件格式
李军
29
李浩
21