一、创建XML
// 建立XML
public static void gernatorXML() {
// 创建Document对象
Document doc = DocumentHelper.createDocument();
// 创建根节点students
Element studentsElement = doc.addElement("students");
// 创建子节点student
Element studentElement1 = studentsElement.addElement("student");
// 添加ID属性
studentElement1.addAttribute("id", "1001");
// 添加子节点
studentElement1.addElement("name").setText("张三");
studentElement1.addElement("age").setText("18");
studentElement1.addElement("sex").setText("男");
studentElement1.addElement("phone").setText("13800138000");
studentElement1.addElement("address").setText("深圳宝安");
// 再创建同样的2个student节点
Element studentElement2 = studentsElement.addElement("student");
// 添加ID属性
studentElement2.addAttribute("id", "10012");
// 添加子节点
studentElement2.addElement("name").setText("李四");
studentElement2.addElement("age").setText("19");
studentElement2.addElement("sex").setText("女");
studentElement2.addElement("phone").setText("13412369854");
studentElement2.addElement("address").setText("上海");
// 再创建同样的2个student节点
Element studentElement3 = studentsElement.addElement("student");
// 添加ID属性
studentElement3.addAttribute("id", "10013");
// 添加子节点
studentElement3.addElement("name").setText("王五");
studentElement3.addElement("age").setText("25");
studentElement3.addElement("sex").setText("女");
studentElement3.addElement("phone").setText("13410110104");
studentElement3.addElement("address").setText("广东");
try {
// 创建XML 将Document写入XML
// 设置格式
OutputFormat format = OutputFormat.createPrettyPrint();
// 设置字符编码也可以设置为gb2312或者gbk
format.setEncoding("utf-8");
// 输入
XMLWriter writer = new XMLWriter(
new FileWriter("xml/students.xml"), format);
// 写入文档
writer.write(doc);
// 关闭流
writer.close();
// 输出提示
System.out.println("======写入成功=======");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
二、解析XML
// 读取XML
public static void getXML() {
try {
// 读取XML
SAXReader reader = new SAXReader();
Document doc = reader.read("xml/students.xml");
// 获取根节点
Element root = doc.getRootElement();
// 获取子节点集合
List<Element> stulList = root.elements();
// 遍历
for (Element ele : stulList) {
// 获取属性
String id = ele.attributeValue("id");
System.out.println("学生ID: " + id);
// 获取子节点的文本内容 name
String name = ele.elementText("name");
// age年龄
String age = ele.elementText("age");
// sex
String sex = ele.elementTextTrim("sex");
// phone
String phone = ele.elementTextTrim("phone");
// address
String address = ele.elementTextTrim("address");
System.out.println("姓名:" + name + " 年龄: " + age + " 性别: "
+ sex + " 电话:" + phone + " 地址: " + address);
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
三、增加节点
//增加新的节点
public static void addXML(){
try {
//读取XML创建解析器
SAXReader reader=new SAXReader();
//创建Document对象
Document doc=reader.read("xml/students.xml");
//获取根节点
Element root=doc.getRootElement();
//创建新的节点
Element student=root.addElement("student");
//添加属性
student.addAttribute("id", "10020");
//创建子节点
student.addElement("name").setText("张三丰");
student.addElement("age").setText("108");
student.addElement("sex").setText("男");
student.addElement("phone").setText("13800138001");
student.addElement("address").setText("武当山");
//写入XML
//设置字符编码和格式
OutputFormat format=new OutputFormat();
format.setEncoding("utf-8");
//创建输出流
XMLWriter writer=new XMLWriter(new FileWriter("xml/students.xml"), format);
//写入Document
writer.write(doc);
//关闭流
writer.close();
//给出提示
System.out.println("======增加成功=======");
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
四、修改节点
//修改节点内容根据 id10013将王五的姓名=王小五,年龄30,性别:男,电话:138000138000,地址:北京
public static void modify(){
try {
//创建SAXReader解析器
SAXReader reader=new SAXReader();
//创建Document
Document doc=reader.read("xml/students.xml");
//找到根节点
Element root=doc.getRootElement();
//子节点集合
List<Element> studentList=root.elements();
//遍历查找
for (Element ele : studentList) {
if(ele.attributeValue("id").equals("10013")){
ele.element("name").setText("王小五");
ele.element("age").setText("30");
ele.element("sex").setText("男");
ele.element("phone").setText("138000138000");
ele.element("address").setText("北京");
}
}
//写入XML
//设置字符格式和编码
OutputFormat format=new OutputFormat();
format.setEncoding("utf-8");
XMLWriter writer=new XMLWriter(new FileWriter("xml/students.xml"), format);
//将Document写入
writer.write(doc);
//关闭流
writer.close();
//给出提示
System.out.println("====修改成功====");
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
五、删除节点XML
/删除节点 删除王小五的节点
public static void delete(){
try {
//创建SAXReader 解析器
SAXReader reader=new SAXReader();
//创建Document对象
Document doc=reader.read("xml/students.xml");
//获取根节点
Element root=doc.getRootElement();
//集合
List<Element> stuList=root.elements();
//遍历
for (Element ele : stuList) {
if(ele.attributeValue("id").equals("10013")){
//获取父节点,并删除这个节点
ele.getParent().remove(ele);
}
}
//写入XML
//设置字符编码格式
OutputFormat format =new OutputFormat();
format.setEncoding("utf-8");
//输出流
XMLWriter writer=new XMLWriter(new FileWriter("xml/students.xml"), format);
writer.write(doc);
writer.close();
System.out.println("===删除成功===");
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}