DOM解析
需要加载整个XML文件,对于内存的需求较大,并且可以对XML文件进行增删改查操作。
DOM解析通常用于JavaWEB项目开发中,作用于框架配置文件。
SAX解析
读取一行XML文件,解析一行XML文件,对于内存需求较小,没有对于XML文件修改能力。
一般用于手机文本解析方式
以上LOW
使用Dom4J解析XML文件
public class Demo1 {
public static void main(String[] args) throws FileNotFoundException, DocumentException {
// 1. 创建获取XML文件的核心类 SAXReader
SAXReader saxReader = new SAXReader();
/*
2. 读取对应的XML文件,获取XML文件的Document对象,也就是整个XML文件对象
这里需要使用Document对象解析整个XML文件
*/
Document document = saxReader.read(new FileInputStream("./src/student.xml"));
/*
3. 获取XML文件的根节点对象,根节点对象是Element XML元素对象
*/
Element rootElement = document.getRootElement();
/*
根据指定的子节点名字获取当前节点下的第一个子节点
*/
Element student = rootElement.element("student");
System.out.println(student);
// 可以获取对应名字的属性值
String id = student.attributeValue("id");
System.out.println(id);
// 获取当前节点的所有子节点List集合
List<Element> elements = student.elements();
for (Element element : elements) {
// 获取文本节点对应的文本数据,返回值是String类型
System.out.println(element.getText());
if ("address".equals(element.getName())) {
List<Element> elements1 = element.elements();
for (Element element1 : elements1) {
System.out.println(element1.getText());
}
}
}
}
}
Xpath解析XML文件
Xpath 语法API
https://www.w3school.com.cn/xpath/xpath_syntax.asp[API]
public class Demo2 {
public static void main(String[] args) throws FileNotFoundException, DocumentException {
Document document = new SAXReader().read(new FileInputStream("./src/student.xml"));
Element rootElement = document.getRootElement();
List<Element> list = rootElement.selectNodes("//name");
for (Element element : list) {
System.out.println(element.getText());
}
List<DefaultAttribute> list1 = rootElement.selectNodes("//@id");
for (DefaultAttribute element : list1) {
System.out.println(element.getValue());
}
List<Element> list2 = rootElement.selectNodes("//student[1]");
for (Element element : list2) {
System.out.println(element);
System.out.println(element.element("name").getText());
System.out.println(element.element("age").getText());
System.out.println(element.element("gender").getText());
System.out.println(element.element("salary").getText());
}
List<Element> list3 = rootElement.selectNodes("//student[last()]");
for (Element element : list3) {
System.out.println(element);
System.out.println(element.element("name").getText());
System.out.println(element.element("age").getText());
System.out.println(element.element("gender").getText());
System.out.println(element.element("salary").getText());
}
List<Element> list4 = rootElement.selectNodes("//student[@id = 2]");
for (Element element : list4) {
System.out.println(element);
System.out.println(element.element("name").getText());
System.out.println(element.element("age").getText());
System.out.println(element.element("gender").getText());
System.out.println(element.element("salary").getText());
}
List<Element> list5 = rootElement.selectNodes("//student[salary > 25000]");
for (Element element : list5) {
System.out.println(element);
System.out.println(element.element("name").getText());
System.out.println(element.element("age").getText());
System.out.println(element.element("gender").getText());
System.out.println(element.element("salary").getText());
}
}
}