dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点(*百度百科).*
使用java解析xml时需要导入jar包(官网地址https://dom4j.github.io/),这里使用dom4j-1.6.1.jar作为介绍案例.
xml案例文件
xml文件名为 book.xml,内容为:
<?xml version="1.0" encoding="UTF-8"?>
<书架>
<书 出版社="中华出版社">
<书名>西游记</书名>
<作者>吴承恩</作者>
</书>
<书 作者="施耐庵">
<书名 创作年代="元末明初">水浒传</书名>
《水浒传》主要描写的是北宋末年,以宋江为首的一百零八条好汉在山东梁山泊聚义的故事。
</书>
</书架>
1.解析xml文档
SAXReader reader = new SAXReader();
Document document = reader.read("book.xml");
2.获取根节点(<书架>节点)
Element root = document.getRootElement();
3.获取<书架>下的<书>全部节点
List<Element> book = root.elements("书");
4.获取<书>的第二个节点
Element book2 = book.get(1);
5.节点的增删改查操作
1. 查节点的内容和参数
1)获取节点名称
获取<书>的父节点
book2.getParent();
2)获取标签体内容
只打印标签体的内容,如果没有标签体,返回空
//<书>节点的标签体内容
String text1 = book2.getText();
System.out.println(text1);
//《水浒传》主要描写的是北宋末年,以宋江为首的一百零八条好汉在山东梁山泊聚义的故事.
//<书名>节点的标签体内容
String text2 = book2.element("书名").getText();//推荐使用
或者String text2 = book2.elementText("书名");
System.out.println(text2);
//水浒传
3)获取标签体参数
Attribute attribute = book2.attribute("作者");
String name = attribute.getName();//作者
String value = attribute.getValue();//施耐庵
3. 增节点的内容和属性
1)增加节点
//创建一个新的<主角>节点
Element role = DocumentHelper.createElement("主角");
2)增加节点标签体
role.setText("武松");
3)将新的<主角>节点挂到第二个<书>节点上
book2.add(role);
4)增加节点属性
//获取要增加属性的节点
Element role = book2.element("主角");
//创建一个属性 年龄="20"
Attribute attribute = DocumentHelper.createAttribute(role, "年龄", "20");
//将属性挂到节点上
role.add(attribute);
4. 删节点的内容和参数
1)删除节点
//删除<主角>节点
Element role = book2.element("主角");
book2.remove(role);
2)删除节点标签体
//获取要移除的节点
Element name = book2.element("书名");
//设置标签体为空
name.setText("");
3)删除节点参数
Element name = book2.element("书名");
Attribute attribute = name.attribute("创作年代");//或者指定移除的第几个属性,从0开始
name.remove(attribute);
6.将内存中的内容写出到文件中
//调整格式用
OutputFormat createPrettyPrint = OutputFormat.createPrettyPrint();
//写出文件
XMLWriter writer = new XMLWriter(new FileOutputStream("book.xmll"),createPrettyPrint);
writer.write(document);
writer.flush();
writer.close();