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",可以是文件路徑字符串,可以是一個文件對象,也可以是
一個文件輸入流對象。