溫馨提示×

溫馨提示×

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

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

xml中有哪些解析方式

發(fā)布時間:2020-12-02 10:26:00 來源:億速云 閱讀:125 作者:小新 欄目:編程語言

這篇文章主要介紹了xml中有哪些解析方式,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

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

XML簡介

XML即可擴展的標記語言,可以定義語義標記(標簽),是元標記語言。XML不像超文本標記語言HTML,HTML只能使用規(guī)定的標記,對于XML,用戶可以定義自己需要的標記。樹狀模型。

XML文檔以層級標簽的形式來組織數據,多用于配置文件、存儲靜態(tài)數據、交換數據。

XML語法

1、每個XML文檔都由XML序言開始,在前面的代碼中的第一行便是XML序言,<?xml version="1.0"?>

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

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

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

XML文件解析的四種方式

1、DOM解析方法

DOM,文檔對象模型(Document Object Model),是官方推薦的標準。DOM是html和xml文檔的編程接口規(guī)范,和平臺、語言是無關的。利用DOM規(guī)范,能夠實現DOM 文檔和xml之間的相互轉換,遍歷、操作相應DOM文檔的內容。DOM規(guī)范的核心就是樹模型,全部讀取之后再解析。

原理是:首先在內存中創(chuàng)建一個Document對象,然后把XML文檔讀取進來賦值給這個dom對象。由于dom對象是基于樹結構的,所以對dom對象進行遍歷即可。對內存中的dom對象可以進行查詢、修改、刪除操作,還可以寫回原XML文檔保存修改。

優(yōu)點:由于整棵樹在內存中,因此可以對xml文檔隨機訪問;可以對xml文檔進行修改操作
缺點:整個文檔必須一次性解析完;由于整個文檔都需要載入內存,對于大文檔成本高

2、SAX解析方法

SAX,簡單應用程序接口(Simple Api For Xml)。非W3C官方所提供的標準,是一個程序員社區(qū)研究出來。SAX在概念上與DOM完全不同。非文檔驅動,是事件驅動的。事件驅動:一種基于回調機制的程序運行方法。由外至內一層一層解析。

優(yōu)點:解析速度快,占用內存少,它需要哪些數據再加載和解析哪些內容。

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

3、JDOM解析方法

JDOM是Java和DOM的結合體。JDOM 致力于建立一個完整的基于 Java 平臺的、通過 Java 代碼來訪問、操作并輸出 XML 數據。JDOM是用Java語言讀、寫、操作XML的新API函數。簡單、高效、優(yōu)化。

優(yōu)點:查找方便,可以修改

缺點:裝載整個文檔,對內存容量要求高

4、DOM4J解析方法。

dom4j是一個Java的XML API,類似于jdom,用來讀寫XML文件的。性能優(yōu)異功能強大簡單易用開放源代碼。它是目前最流行、最好用的XML解析工具,解析XML的速度最快。

操作步驟:

1:創(chuàng)建SAXReader:SAXReader reader = new SAXReader();
2:創(chuàng)建文件輸入流打開xml文件:InputStream in = new FileInputStream("XXX.xml");
3:通過reader和輸入流讀取xml文件到內存創(chuàng)建Document對象:Document dom = reader.read(in);
4:獲取根節(jié)點:Element root=dom.getRootElement();
5:獲取子節(jié)點列表:List<Element> childNodes = root.elements();
6:遍歷子節(jié)點:Element node = childNodes.get(i);
7:讀取結點信息:
 1)、結點屬性值:node.attributeValue("屬性名");
 2)、結點名:node.getName();
 3)、結點值:node.getValue();
 4)、子結點文本值:node.elementText("子結點名")

感謝你能夠認真閱讀完這篇文章,希望小編分享xml中有哪些解析方式內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業(yè)資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!

向AI問一下細節(jié)

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

AI