首頁 >後端開發 >XML/RSS教程 >xml中常見的四種解析方式是什麼?

xml中常見的四種解析方式是什麼?

青灯夜游
青灯夜游原創
2019-04-03 15:52:1124707瀏覽

xml解析方式有:1、DOM解析方法,可以對xml文檔進行修改操作;2、SAX解析方法,解析速度快,佔用內存少;3、JDOM解析方法,查找方便;4、 DOM4J解析方法,解析XML的速度快。

xml中常見的四種解析方式是什麼?

在XML的解析方式很多,但有四種解析方式是最常用的,分別為DOM方法、SAX方法、JDOM方法、DOM4J 方法。

XML簡介

XML即可擴充的標記語言,可以定義語意標記(標籤),是元標記語言。 XML不像超文本標記語言HTML,HTML只能使用規定的標記,對於XML,使用者可以定義自己需要的標記。樹狀模型。 

XML文件以層級標籤的形式來組織數據,多用於設定檔、儲存靜態數據、交換數據。

XML語法

1、每個XML文件都由XML序言開始,在前面的程式碼中的第一行就是XML序言,&lt ;?xml version="1.0"?>

2、任何的起始標籤都必須有一個結束標籤。

3、標籤必須以適當的順序進行嵌套,所以結束標籤必須按鏡像順序來匹配起始標籤。

4、標籤如果有屬性,屬性值必須加雙引號。

XML檔案解析的四種方式

#1、DOM解析方法

DOM,文檔物件模型(Document Object Model),是官方推薦的標準。 DOM是html和xml文件的程式介面規範,跟平台、語言是無關的。利用DOM規範,能夠實現DOM 文件與xml之間的相互轉換,遍歷、操作對應DOM文檔的內容。 DOM規格的核心就是樹模型,全部讀取之後再解析。

原理是:先在記憶體中建立一個Document對象,然後把XML文件讀取進來賦值給這個dom對象。由於dom物件是基於樹狀結構的,所以對dom物件進行遍歷即可。對記憶體中的dom物件可以進行查詢、修改、刪除操作,也可以寫回原XML文件保存修改。

優點:由於整棵樹在記憶體中,因此可以對xml文件隨機存取;可以對xml文件進行修改操作
缺點:整個文件必須一次解析完;由於整個文件都需要載入內存,對於大文檔成本高

2、SAX解析方法

SAX,簡單應用程式介面(Simple Api For Xml)。非W3C官方所提供的標準,是一個程式設計師社群研究出來。 SAX在概念上與DOM完全不同。非文檔驅動,是事件驅動的。事件驅動:一種基於回呼機制的程式運作方法。由外至內一層一層解析。

優點:解析速度快,佔用記憶體少,它需要哪些資料再載入和解析哪些內容。

缺點:它不會記錄標籤的關係,而是需要應用程式自己處理,這樣就會增加程式的負擔。

3、JDOM解析方法

JDOM是Java和DOM的結合體。 JDOM 致力於建立一個完整的基於 Java 平台的、透過 Java 程式碼存取、操作並輸出 XML 資料。 JDOM是用Java語言讀取、寫入、操作XML的新API函數。簡單、高效、優化。 

優點:尋找方便,可以修改

缺點:載入整個文件,對記憶體容量要求高

4、DOM4J解析方法。

dom4j是一個Java的XML API,類似jdom,用來讀寫XML檔的。效能優異功能強大簡單易用開放原始碼。它是目前最受歡迎、最好用的XML解析工具,解析XML的速度最快。

操作步驟:

1:建立SAXReader:SAXReader reader = new SAXReader();
2:建立檔案輸入流開啟xml檔案:InputStream in = new FileInputStream("XXX. xml");
3:透過reader和輸入流讀取xml檔案到記憶體建立Document物件:Document dom = reader.read(in); 
4:取得根節點:Element root=dom.getRootElement( );
5:取得子節點清單:List childNodes = root.elements();
6:遍歷子節點:Element node = childNodes.get(i);
7:讀取結點資訊:
 1)、結點屬性值:node.attributeValue("屬性名稱");
 2)、結點名稱:node.getName();
 3)、結點值: node.getValue();
 4)、子結點文字值:node.elementText("子結點名")

相關影片教學推薦:《XML教學

以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。更多精彩內容大家可以追蹤php中文網相關教學欄位! ! !

以上是xml中常見的四種解析方式是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:XPath是什麼下一篇:XPath是什麼