關於xml解析
這幾天對xml這特殊的語言做了下了解分析,作為代表的解析是DOM ( Document Object Model)和SAX(Simple API
for XML)。
DOM ==>>這個東西,wiki上說的歷史比較有趣---browser war,這裡就不談了。
DOM它的本質其實就是一個樹的遍歷,我們看下下面例子:
<class>
<student id=1>
<name>lee</name>
<age>20</age>
</student>
<student id=2>
<name>suse</name>
<age>21</age>
</student>
</class>
這簡單的xml可以這樣看:
class
+-------------||--------------+
| |
student.1 student.2
+-----||------+ +----||----+
| | | |
name age name age
| | | |
lee 20 suse 21
當DOM處理xml的時候,通過解析器,把xml檔案構建成如上的樹,存放在記憶體,可以隨時對數進行讀寫,這樣的設計
在使用上很方便實現上比較簡單,但當xml檔案足夠的龐大時,這做法明顯有缺陷。所以,另外一種代表性的xml解析
就是SAX。
SAX====>>從最初只為java設計,到普及多種語言,可以說明這種解析是高效並節省的。它不像DOM那樣把整個xml
檔案構建成樹存放在記憶體,它是串流的解析。簡單來說,要多少取多少;官方點來說就是,讀到哪就觸發到哪。
這是wiki的說法:一個實現SAX的解析器(也就是“SAX Parser”)以一個串流解析器的型式作用,擁有事件驅動API。
由使用者定義回撥函式,解析時,若發生事件的話會被呼叫。
這個想法,和麵向切面程式設計的思想相似。這好處也明顯的減少的對記憶體的壓力,也由於邊讀邊觸發處理,所以速度也
會比DOM解析的快。
每種方法都會有優缺點,SAX的缺點是單向性,過了就回不了頭,像debug的時候,過了這個作用域就看不到引數的
資訊。所以在各種應用各種要求下,DOM和SAX會分別滿足各自需求。。。。
DOM的樹的遍歷在反覆的操作下始終是不太看好,而SAX的單向性不夠靈活。
對於xml的想法,
1.高度自定義的標籤
2.高度自定義的作用;資料繫結,sql操作。。。
3.高度自定義的語法;
在出色的解析器下,是可以發揮極大的作用。
相關文章
- 關於SAX解析xml檔案的問題XML
- 有關jdom解析xmlXML
- 請教高手關於解析xml檔案的問題 急~~XML
- 關於web.xmlWebXML
- Xml解析XML
- banq:關於XML的學習XML
- 基於 DOM 的 XML 檔案解析類XML
- 關於 Exception:Xml中的非法字元ExceptionXML字元
- 關於castor的xml mappingASTXMLAPP
- iOS – XML解析iOSXML
- go 解析xmlGoXML
- xml php 解析XMLPHP
- iOS - XML解析iOSXML
- 【Java】解析xmlJavaXML
- Java解析XMLJavaXML
- jaxb解析xmlXML
- DOM解析XMLXML
- 關於XML字串和XML Document之間的轉換薦XML字串
- 關於地址反向解析
- 關於iOS解析XML使用NSXMLParser和GDataXML不得不說的一些事iOSXML
- Python解析xml[xml.dom]PythonXML
- 關於 Spartacus 的 sitemap.xml 問題XML
- 175.XML解析XML
- C# XML解析C#XML
- 使用jdom解析XMLXML
- 解析xml筆記XML筆記
- XML解析技術XML
- xml解析之domXML
- XML資料解析XML
- 關於 二維碼 解析
- 關於TS流的解析
- Servlet中關於web.xml的測試ServletWebXML
- 關於 Pentaho 的配置檔案 pentaho.xmlXML
- 關於.NET Framework提供的XML檔案格式FrameworkXML
- 關於WEB.XML的問題,請進WebXML
- 關於XML序列化的簡單例子XML單例
- 【求助】關於xml-rpc的問題XMLRPC
- 讀取xml檔案 解析雙層xmlXML