DOM4J是什么
DOM4J是针对Java开发人员专门提供的XML文档解析规范,它不同与DOM,但与DOM相似。DOM4J针对Java开发人员而设计,所以对于Java开发人员来说,使用DOM4J要比使用DOM更加方便。
dom4j解析xml文件的步骤:
- 使用SAXReader来获取document对象,document对象代表整个xml文档,所以必须先获取.
- 获取完成后就可以对xml文件进行操作了,比如:增删改查操作.
- 最后,如果进行了增删改操作就必须保存document对象到xml文档中.
下面开始介绍dom4j的使用方法:
导jar包的操作省略,本文章只讲知识点
1. DOM4J获取Document对象
使用DOM4J来加载XML文档,需要先获取SAXReader对象,然后通过SAXReader对象的read()方法来加载XML文档:
//创建解析器
SAXReader reader = new SAXReader();
// reader.setValidation(true);
//得到document
Document doc = reader.read("src/students.xml");
2. DOM4J创建Document对象
DocumentHelper类有很多的createXXX()方法,用来创建各种Node对象。
Document doc = DocumentHelper.createDocument();
涉及的相关方法(包括对xml文档常用的增删改查方法):
- Element getRootElement():Document的方法,用来获取根元素;
- List elements():Element的方法,用来获取所有子元素;
- String attributeValue(String name):Element的方法,用来获取指定名字的属性值;
- Element element(String name):Element的方法,用来获取第一个指定名字的子元素;
- Element elementText(String name):Element的方法,用来获取第一个指定名字的子元素的文- 本内容。
- Element addElement(String name):Element的方法,为当前元素添加指定名字子元素。返回值为新建元素对象;
- setText(String text):Element的方法,为当前元素设置文本内容。
- addAttribute(String name, String value):Element的方法,为当前元素添加属性。
- boolean remove(Element e):Element和Document的方法,移除指定子元素;
- Element getParent():获取父元素,根元素的父元素为null。
- DocumentHelper.createDocument():创建Document对象;
- DocumentHelper.createElement(String name):创建指定名称的Element元素。
- int indexOf(Node node):Branch的方法,查找指定节点,在当前Branch的子节点集合中的下标位置。
3. DOM4J保存Document对象
保存Document对象需要使用XMLWriter对象的write()方法来完成,在创建XMLWriter时还可以为其指定XML文档的格式(缩进字符串以及是否换行),这需要使用OutputFormat来指定。
doc.addDocType("students", "", "students.dtd");
OutputFormat format = new OutputFormat("\t", true);
format.setEncoding("UTF-8");
//回写xml
XMLWriter writer = new XMLWriter(new FileWriter(xmlName), format);
writer.write(doc);
writer.close();
4. 将两个方法封装成静态方法:
//返回document
public static Document getDocument(String path) {
try {
//创建解析器
SAXReader reader = new SAXReader();
//得到document
Document document = reader.read(path);
return document;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//回写xml的方法
public static void xmlWriters(String path,Document document) {
try {
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(path), format);
xmlWriter.write(document);
xmlWriter.close();
}catch(Exception e) {
e.printStackTrace();
}
}