1.废话不多说了,好困,想睡觉。。。先导依赖
dom4j
dom4j
1.6.1
jaxen
jaxen
1.1.1
opensymphony
sitemesh
2.4.2
2.简单的增删改查操作 ,主要是xpath的学习,要具体案例具体分析
package com.guguo.controller;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
@RestController
public class Dom4jController {
String path="D:\idea_saved\Springboot_jicheng\";
//xml文件的查询操作
@GetMapping("/searchXml")
public void searchXml( ) throws DocumentException {
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File(path + "article.xml"));
Element rootElement = document.getRootElement();//这个生成的变量指向根标签,这里指的是articles标签
for (Iterator elementIterator=rootElement.elementIterator(); elementIterator.hasNext();) {
Element element = elementIterator.next();//获得到了子标签
System.out.println(element.getName());//获得标签的名字,这里是article
System.out.println(element.attributeValue("id"));//获取标签内的属性值,这里是获取id属性值
System.out.println(element.elementText("name"));//获取标签内子标签的值
System.out.println(element.elementText("collection"));
}
}
//xml文件的添加操作
@GetMapping("/addXml")
public void addXml( ) throws DocumentException, IOException {
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File(path + "article.xml"));
Element rootElement = document.getRootElement();//这个生成的变量指向根标签,这里指的是articles标签
//开始添加标签
Element element = rootElement.addElement("article").addAttribute("id", "3");//添加子标签
element.addElement("name").addText("c语言");//创建子标签,向子标签里添加文本
element.addElement("collection").addText("10");
element.addElement("hate").addText("8");
element.addElement("praise").addText("7");
//将刚才添加的标签通过流的方式添加进文档里
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter xmlWriter = new XMLWriter(new FileWriter(new File(path + "article.xml")), format);
xmlWriter.write(document);
xmlWriter.close();
}
//xml文件的删除操作
@GetMapping("/deleteXml")
public void deleteXml( ) throws DocumentException, IOException {
//这是固定不变的部分
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File(path + "article.xml"));
Element rootElement = document.getRootElement();//这个生成的变量指向根标签,这里指的是articles标签
//使用Xpath找到某一个标签,然后删掉它
Element element = (Element)rootElement.selectSingleNode("//article[@id='3']");
element.getParent().remove(element);
//将刚才添加的标签通过流的方式添加进文档里
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter xmlWriter = new XMLWriter(new FileWriter(new File(path + "article.xml")), format);
xmlWriter.write(document);
xmlWriter.close();
}
//xml文件更新操作
@GetMapping("/updateXml")
public void updateXml( ) throws DocumentException, IOException {
//这是固定不变的部分
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File(path + "article.xml"));
Element rootElement = document.getRootElement();//这个生成的变量指向根标签,这里指的是articles标签
//在修改一个标签之前首先要找到这个标签
Element element = (Element)rootElement.selectSingleNode("//article[@id='4']");
element.element("name").setText("计算机组成原理");
element.element("name").addAttribute("id","200");
//将刚才添加的标签通过流的方式添加进文档里
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter xmlWriter = new XMLWriter(new FileWriter(new File(path + "article.xml")), format);
xmlWriter.write(document);
xmlWriter.close();
}
}
3.最后操作的文件样子:
java
10
8
7
计算机组成原理
10
8
7



