当我们使用Java自带的dom解析时,过程繁琐,操作性局限,由此产生更灵活的java xml框架dom4j。
使用dom4j需要先去下载jar包,官方网址https://dom4j.github.io/ 访问网站过慢可以使用UU加速器,免费加速学术资源网站。
下载完成后,在自己的项目中新建一个文件夹directory,名为lib,将jar包粘贴到lib中,右击后选择Add as librarys
1.SAXReader saxReader = new SAXReader();
2.Document document = saxReader.read("收藏信息.xml");//xml路径
1.第一种漂亮的格式
// 将document从内存中写入xml文件
// 获取OutputFormat类对象 格式化 让xml文件变好看
OutputFormat outputFormat = OutputFormat.createPrettyPrint();
// 获取FileWriter类对象 需要操作的文件路径 此处是相对路径
FileWriter fileWriter = new FileWriter("收藏信息.xml");
/ 创建XMLWriter类对象 将fileWriter指向的文件 格式化
XMLWriter xmlWriter = new XMLWriter(fileWriter, outputFormat);
// 将内存中的document写入xml文件
xmlWriter.write(document);
// 关闭资源 很重要 否则写不进xml文件
xmlWriter.close();
2.默认格式
// 获取FileWriter类对象,指向xml文件
FileWriter fileWriter = new FileWriter("收藏信息.xml");
// 将自己写入xml文件
document.write(fileWriter);
// 关闭流 很重要 否则写不进去
fileWriter.close();
(1)增:
package com.practise02;
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 java.io.FileWriter;
import java.io.IOException;
public class AddXml {
public static void main(String[] args) throws DocumentException, IOException {
/*
* 使用 dom4j 对xml文件进行增加元素
*
* */
// 获取document对象
SAXReader saxReader = new SAXReader();
Document document = saxReader.read("收藏信息.xml");
// 获取根元素 PhoneInfo
Element rootElement = document.getRootElement();
// 向根元素中添加子元素Brand
Element brandElement = rootElement.addElement("Brand");
// 设置Brand元素属性及值
brandElement.addAttribute("name", "OPPO");
// 向元素Brand中添加子元素Type
Element typeElement = brandElement.addElement("Type");
// 设置Type的属性及值
typeElement.addAttribute("name", "Findx6");
// // 将document从内存中写入xml文件
// // 获取OutputFormat类对象 格式化 让xml文件变好看
// OutputFormat outputFormat = OutputFormat.createPrettyPrint();
// // 获取FileWriter类对象 需要操作的文件路径 此处是相对路径
// FileWriter fileWriter = new FileWriter("收藏信息.xml");
// // 创建XMLWriter类对象 将fileWriter指向的文件 格式化
// XMLWriter xmlWriter = new XMLWriter(fileWriter, outputFormat);
// // 将内存中的document写入xml文件
// xmlWriter.write(document);
// // 关闭资源 很重要 否则写不进xml文件
// xmlWriter.close();
/*
* 也可以不使用漂亮的格式化写入xml,这样会更简单
* */
FileWriter fileWriter = new FileWriter("收藏信息.xml");
document.write(fileWriter);
fileWriter.close();
}
}
xml文件:
(2)删除:
package com.practise02;
import com.dom4j.Dom4jUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.xml.sax.SAXException;
import java.util.Iterator;
public class RemoveXml {
public static void main(String[] args) throws DocumentException, SAXException {
/*
* 删除xml指定的元素
* 将获取document和写入xml的代码封装便于使用
*
* */
// 使用自己写的工具类 获取document
Document document = Dom4jUtils.getDocument("收藏信息.xml");
// 获取根元素
Element rootElement = document.getRootElement();
// 将元素存入Iterator
Iterator elementIterator = rootElement.elementIterator();
// 遍历 找到要删除的元素 如 Brand为OPPO
while(elementIterator.hasNext()){
Element element = elementIterator.next();
if (element.attributeValue("name").equals("OPPO"))
rootElement.remove(element);
}
// 调用写好的工具类 将内存中的document写入xml问及那
Dom4jUtils.writeDocument(document,"收藏信息.xml");
}
}
xml文件:
(3)改:
package com.practise02;
import com.dom4j.Dom4jUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.xml.sax.SAXException;
import java.util.Iterator;
public class SetXml {
public static void main(String[] args) throws DocumentException, SAXException {
/*
* 修改xml文件
*
*/
// 获取document
Document document = Dom4jUtils.getDocument("收藏信息.xml");
// 获取就根元素
Element rootElement = document.getRootElement();
// 获取元素集合
Iterator elementIterator = rootElement.elementIterator();
// 遍历 找到要修改的元素 XiaoMi 改 小米
while(elementIterator.hasNext()){
Element element = elementIterator.next();
// 判断
if (element.attributeValue("name").equals("XiaoMi"))
element.setAttributeValue("name","小米");
}
// 将document写入xml文件
Dom4jUtils.writeDocument(document,"收藏信息.xml");
}
}
xml文件:
(4)查
package com.practise02;
import com.dom4j.Dom4jUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.xml.sax.SAXException;
import java.util.Iterator;
public class SearchXml {
public static void main(String[] args) throws DocumentException, SAXException {
/* 对xml文件进行遍历
*
*
* */
// 获取document对象
Document document = Dom4jUtils.getDocument("收藏信息.xml");
// 获取根元素
Element rootElement = document.getRootElement();
// 获取Brand元素集合
Iterator brandElementIterator = rootElement.elementIterator();
// 遍历
while(brandElementIterator.hasNext()){
// 取出Brand元素
Element element = brandElementIterator.next();
// 打印Brand元素
System.out.println(element.attributeValue("name"));
// 获取Type元素集合
Iterator typeElementIterator = element.elementIterator();
// 遍历
while(typeElementIterator.hasNext()){
// 取出Type元素
Element typeElement = typeElementIterator.next();
// 打印Type元素
System.out.println("\t" + typeElement.attributeValue("name"));
}
}
}
}
控制台: