亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

XML解析中DOM解析的案例分析

發布時間:2020-10-20 16:09:22 來源:億速云 閱讀:158 作者:小新 欄目:編程語言

小編給大家分享一下XML解析中DOM解析的案例分析,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

一、概念

xml文件多用于信息的描述,所以在得到一個xml文檔之后按照xml中的元素取出對應的信息就是xml的解析。Xml解析有兩種方式,一種是DOM解析,另一種是SAX解析,兩種操作的方式如圖。

XML解析中DOM解析的案例分析

二、DOM解析

基于DOM解析的xml分析器是將其轉換為一個對象模型的集合,用樹這種數據結構對信息進行儲存。通過DOM接口,應用程序可以在任何時候訪問xml文檔中的任何一部分數據,因此這種利用DOM接口訪問的方式也被稱為隨機訪問。

這種方式也有缺陷,因為DOM分析器將整個xml文件轉換為了樹存放在內存中,當文件結構較大或者數據較復雜的時候,這種方式對內存的要求就比較高,且對于結構復雜的樹進行遍歷也是一種非常耗時的操作。不過DOM所采用的樹結構與xml存儲信息的方式相吻合,同時其隨機訪問還可利用,所以DOM接口還是具有廣泛的使用價值。

這里我們舉個栗子來說明xml轉換為樹的數據結構。

<?xml version="1.0" encoding="GBK"?>
<address>
	<linkman>
		<name>Van_DarkHolme</name>
		<email>van_darkholme@163.com</email>
	</linkman>
	<linkman>
		<name>Bili</name>
		<email>Bili@163.com</email>
	</linkman>
</address>

將該xml轉換為樹的結構為:

XML解析中DOM解析的案例分析

DOM解析中有以下4個核心操作接口

Document:此接口代表了整個xml文檔,表示為整個DOM的根,即為該樹的入口,通過該接口可以訪問xml中所有元素的內容。其常用方法如下。

(注:上述圖中雖未畫出,但是name和email的屬性也分別為一個節點)

Document常用方法

XML解析中DOM解析的案例分析

Node:此接口在整個DOM樹中有著舉足輕重的地位,DOM操作的核心接口都繼承于Node(Document、Element、Attr)。在DOM樹中,每一個Node接口代表了一個DOM樹節點

Node接口常用方法

XML解析中DOM解析的案例分析

NodeList:此接口表示一個點的集合,一般用于有序關系的一組節點。

NodeList常用方法

XML解析中DOM解析的案例分析

NamedNodeMap:此接口表示一組節點和其唯一名稱對應的一一關系,主要用于節點屬性的表示

除了以上四個核心接口外,如果一個程序需要進行DOM解析操作,則需要按照如下步驟進行:

1. 建立DocumentBuilderFactor,用于獲得DocumentBuilder對象:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

2. 建立DocumentBuidler:

DocumentBuilder builder = factory.newDocumentBuilder();

3. 建立Document對象,獲取樹的入口:

Document doc = builder.parse(“xml文件的相對路徑或者絕對路徑”);

4. 建立NodeList:

NodeList n1 = doc.getElementByTagName(“讀取節點”);

5. 進行xml信息獲取

public class DOMDemo01 {
	
	public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException{
		//建立DocumentBuilderFactor,用于獲得DocumentBuilder對象:
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		//2.建立DocumentBuidler:
		DocumentBuilder builder = factory.newDocumentBuilder();
		//3.建立Document對象,獲取樹的入口:
		Document doc = builder.parse("src//dom_demo_02.xml");
		//4.建立NodeList:
		NodeList node = doc.getElementsByTagName("linkman");
		//5.進行xml信息獲取
		for(int i=0;i<node.getLength();i++){
			Element e = (Element)node.item(i);
			System.out.println("姓名:"+
					e.getElementsByTagName("name").item(0).getFirstChild().getNodeValue());
			System.out.println("郵箱:"+
					e.getElementsByTagName("email").item(0).getFirstChild().getNodeValue());
		}	
		
	}
}

XML解析中DOM解析的案例分析

上述代碼則從第四處開始分析:

通過doc.getElementByTagName(“linkman”)我們獲得了一個NodeList,上述xml文件中包含了兩個linkman的節點,所以這里NodeList中包含了兩個Node(都是linkman節點),然后通過循環的方法來獲取xml文件中的信息。

Element e = (Element)node.item(i)獲得了linkman節點,即e這里指向了linkman

e.getElementTagName(“name”).item(0).getFirstChild().getNodeValue();

getElementTagName(“name”);獲得了該linkman下的所有name節點(其實就1個);

Item(0);取第一個Name節點(就一個);

getFristChild();獲取name節點下的文本節點,即內容van所在的節點(上面已經提到過,文本內容也是一個單獨的節點,Document方法列表中的createTextNode()就是創建文本節點);

getNodeValue()獲得文本節點的值:van_darkholme;

看完了這篇文章,相信你對XML解析中DOM解析的案例分析有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泸定县| 七台河市| 丹阳市| 雷波县| 庆城县| 丘北县| 泾源县| 乡城县| 武穴市| 周口市| 汉川市| 盐津县| 海晏县| 荣昌县| 杨浦区| 乌拉特前旗| 武义县| 盐山县| 葵青区| 上饶市| 广德县| 兴业县| 横峰县| 丰台区| 玛多县| 米脂县| 赣州市| 祁东县| 讷河市| 西城区| 普兰县| 黄陵县| 肃宁县| 谷城县| 泰州市| 武乡县| 舟曲县| 从江县| 固镇县| 库尔勒市| 堆龙德庆县|