jar包下载:https://dom4j.github.io/
具体教程参考文章:https://www.cnblogs.com/sharpest/p/7877501.html
先编写一个xml如下
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student id="01">
<name>哇唧唧哇</name>
<age>8</age>
</student>
<student id="02">
<name>嗷嗷嗷</name>
<age>4</age>
</student>
</students>
导入dom4j jar包
简单查询:
SAXReader reader = new SAXReader();
//SAXReader :读取xml文件到Document树结构文件对象
//创建dom4j的解析器
Document document = reader.read(new File("student.xml"));
//通过该解析器读取xml文件
Element root = document.getRootElement();
//将文件变为root根元素-------1
for( Iterator iterator = root.elementIterator();iterator.hasNext();) {
Element element = (Element) iterator.next();
//System.out.println(element.getName()); //获得节点: student
String id = element.attributeValue("id");//获得id
String name= element.elementText("name");//获得name标签(标签内容)
//将文件变为root根元素-------2
List<Element> elelist= root.elements();//两个student标签
for(Element element:elelist) {
String id = element.attributeValue("id");
System.out.println(id);
}
添加节点:
/编写解析器
SAXReader reader = new SAXReader();
Document document = reader.read(new File("student.xml"));
//获得root
Element root = document.getRootElement();
Element student = root.addElement("student").addAttribute("id", "03");
student.addElement("name").addText("www");
student.addElement("age").addText("20");
//定义数据
// XMLWriter writer = new XMLWriter(new FileWriter(new File("student.xml")));
//创建流
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter writer = new XMLWriter(new FileWriter(new File("student.xml")),format);
writer.write(document);
//关闭流
writer.close();
删除:dom4j 提供方法可以快速定位到想要的删除的内容
利用xpath
导入:
jaxen-1.1-beta-6.jar
jaxme-api-0.3.jar
jsr173_1.0_api.jar
pull-parser-2.1.10.jar
relaxngDatatype-20030807.jar
xpp3-1.1.3.3.jar
xsdlib-20030807.jar
public static void main(String[] args) throws DocumentException {
SAXReader reader = new SAXReader();
Document document = reader.read(new File("student.xml"));
//获得root
Element root = document.getRootElement();
Element student = (Element) document.selectSingleNode("//student[@id='03']");
student.getParent().remove(student);
try {
show("student.xml",document);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void show(String filiePath, Document document) throws IOException {
//创建流
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter writer = new XMLWriter(new FileWriter(new File(filiePath)),format);
writer.write(document);
//关闭流
writer.close();
}
修改:查询到指定的元素,才能进行修改
public static void main(String[] args) throws DocumentException, IOException {
SAXReader reader = new SAXReader();
Document document = reader.read(new File("student.xml"));
Element student = (Element) document.selectSingleNode("//student[@id='02']");
student.element("name").addAttribute("type", "dou");
student.element("name").setText("11");
show("student.xml", document);
try {
show("student.xml",document);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void show(String filiePath, Document document) throws IOException {
//创建流
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter writer = new XMLWriter(new FileWriter(new File(filiePath)),format);
writer.write(document);
//关闭流
writer.close();
}