首先先介绍对XML的两种解析方式:
(XML在不同语言中的解析方式是一样的,只是解析的语法不一样而已。这也是xml的优势)
1.第一种方式——DOM解析器
DOM是基于树形结构的节点或者信息片段的集合。DOM的原理是使用DOM对XML文件进行操作时,
首先解析文件,将文件分为独立的元素,属性和注释等,然后以节点树的形式在内存中对XML文字进行表示
这样就可以通过节点树访问文档的内容,本根据需要修改文档。
需要注意的是:DOM解析器是读入整个文档,所以内存占用相对较高
2.第二种方式——SAX解析器
SAX是一种基于事件的解析器,事件驱动的流式解析方式是从文件的开始顺序解析到文档的结束,不可暂停
或者倒退。
优点是解析速度快,占用内存少
简单的理解就是对文档进行顺序扫描,当扫描到文档开始与结束,元素开始与结束等位置时通知事件处理函数,
由事件处理函数做相应的动作,然后继续同样的扫描,直至文档结束!
然后再来直接看JDOM的使用
//日期:2019.5.30
//作者:******
//功能:练习使用java配合读写xml文件,通过开源的JDOM
/*
* 1.JDOM用来弥补DOM和SAX在实际应用中的不足之处
* 2.SAX的不足主要在于他没有文档修改,随机访问,以及输出的功能
* 3.DOM的不足主要在于其是一个接口定义语言,他的任务是在不同语言实现一个最低的通用标准,
* 并不是专门为java特别设计的。
* 4.JDOM与现行的SAX和DOM标准兼容为java程序员提供了一个简单,轻量的xml文档操作方法
* */
package com.******;
import java.io.IOException;
import java.util.*;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
public class Test2 {
public static void main(String args[])
{
SAXBuilder builder = new SAXBuilder(); //创建SAX模式构造器对象
try {
//调用模式构造器的build方法读取xml文档并创建document文档对象
Document document = builder.build("source/peizhi.xml");
//通过document文档对象获取文档的根元素对象
Element root = document.getRootElement();
//由根元素对象获取根元素下所有的元素并存放在List对象中
List list = root.getChildren();
System.out.printf("%-20s%-20s%-20s", "id","name","phone");
System.out.println();
System.out.println("==============================================================");
System.out.println();
for(int i = 0; i < list.size(); i++)
{
Element student = (Element)list.get(i);
//getAttributeValue方法得到元素的属性值
String id = student.getAttributeValue("id");
//getChildren得到子元素,get方法相当于得到集合中的第几个子元素
Element nameElement = (Element)student.getChildren().get(0);
//getValue方法。把对应xml元素的值转变成java的String
String name = nameElement.getValue();
Element phoneElement = (Element)student.getChildren().get(1);
String phone = phoneElement.getValue();
System.out.printf("%-20s%-20s%-20s",id,name,phone);
System.out.println();
}
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
程序所用测试的XML文件展示:
<?xml version="1.0" encoding="GB2312"?>
<students>
<student id="55161014">
<name>changchun</name>
<phone>15015015000</phone>
</student>
<student id="55161015">
<name>handan</name>
<phone>32132132155</phone>
</student>
</students>
程序测试结果:
以上只是展示了JDOM对XML读取的相关简单操作流程
其余深入内容,以及对XML的写入读者自行学习即可!