1.DOM解析(官方)
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse("file");
NodeList list = document.getElementsByTagName("ndoe");//常规的DOM操作
} catch (Exception e) {
e.printStackTrace();
}
parse()方法加载XML文件到当前程序。
将XML文件全部加载到内存中,然后逐个解析。
2.SAX解析(官方)
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
parser.parse("file",handler);
}catch (Exception e) {
e.printStackTrace();
}
参数handler是一个继承了DefaultHandler类的子类的实例化对象。
这个子类中解析文档、元素的方法如下:
--------startDocument() //解析XML文件开始
-----------------------startElement() //开始解析某个元素
-----------------------endElement() //结束解析该元素(通常将解析获得的信息存到一个对象)
-----------------------startElement() //开始解析另一个个元素
-----------------------endElement() //结束解析元素
---------endDocument() //解析XML文件结束
SAX解析XML文件的方法是从头到尾一步一步地解析文档的节点元素,是一种事件驱动模式,对内存耗费
较小。
3.JDOM解析(非官方,DOM的拓展)
需要事先导入一个JDOM的jar包到项目。后面导入的类也是JDOM包下的的类
try {
SAXBuilder saxbuilder = new SAXBuilder();
Document document = saxbuilder.build("file");
Element rootElement = document.getRootElement(); //获得XML文件的根节点
}catch (Exception e) {
e.printStackTrace();
}
获得根节点之后,通过getChildren()方法获得其子节点的List集合。
4.DOM4J解析(非官方,DOM的拓展,现在比较流行的)
同理,由于是非官方的,我们依然需要引入一个DOM4J的jar包
try {
SAXReader reader = new SAXReader();
Document document = reader.read("file");
Element rootElement = document.getRootElement();//获得XML文件的根节点
}catch (Exception e) {
e.printStackTrace();
}
性能优异,灵活性好,功能强大,易使用,所以现在比较流行使用DOM4J解析XML。
注意:以上所有引入文件方法的参数"file",可以是文件路径字符串,可以是一个文件对象,也可以是
一个文件输入流对象。