DOM SAX,以及何時哪個更合適

2021-04-07 12:02:50 字數 1694 閱讀 3841

sax 處理是如何工作的

sax 在讀取 xml 流的同時處理它們,這很像以前的自動收報機紙帶(ticker tape)。請考慮下面的 xml **片斷:

<?xml version="1.0"?>

unix

color

分析這個**片斷的 sax 處理器一般情況下將產生以下事件:

start document

start element (samples)

characters (white space)

start element (server)

characters (unix)

end element (server)

characters (white space)

start element (monitor)

characters (color)

end element (monitor)

characters (white space)

end element (samples)

sax api 允許開發人員捕捉這些事件並對它們作出反應。

sax 處理涉及以下步驟:

建立乙個事件處理程式。

建立 sax 解析器。

向解析器分配事件處理程式。

解析文件,同時向事件處理程式傳送每個事件。

基於事件的處理的優點和缺點

這種處理的優點非常類似於流**的優點。分析能夠立即開始,而不是等待所有的資料被處理。而且,由於應用程式只是在讀取資料時檢查資料,因此不需要將資料儲存在記憶體中。這對於大型文件來說是個巨大的優點。事實上,應用程式甚至不必解析整個文件;它可以在某個條件得到滿足時停止解析。一般來說,sax 還比它的替代者 dom 快許多。

另一方面,由於應用程式沒有以任何方式儲存資料,使用 sax 來更改資料或在資料流中往後移是不可能的。

dom 是基於樹的處理

dom 是處理 xml 資料的傳統方法。使用 dom 時,資料以樹狀結構的形式被載入到記憶體中。

例如,在sax 處理是如何工作的中用作例子的相同文件在 dom 中將表示為節點,如下所示:

矩形框表示元素節點,橢圓表示文字節點。

dom 使用父子關係。例如,在這個例子中,samples

是具有五個孩子的根元素:三個文字節點(空白),以及兩個元素節點 server

和 monitor

。要認識到的一件重要事情是,server

和 monitor

節點實際上具有 null

值。相反,它們具有文字節點(unix

和 color

)作為孩子。

基於樹的處理的優點和缺點

dom 以及廣義的基於樹的處理具有幾個優點。首先,由於樹在記憶體中是持久的,因此可以修改它以便應用程式能對資料和結構作出更改。它還可以在任何時候在樹中上下導航,而不是像 sax 那樣是一次性的處理。dom 使用起來也要簡單得多。

另一方面,在記憶體中構造這樣的樹涉及大量的開銷。大型檔案完全占用系統記憶體容量的情況並不鮮見。此外,建立一棵 dom 樹可能是乙個緩慢的過程。

如何在 sax 和 dom 之間選擇

選擇 dom 還是選擇 sax,這取決於下面幾個因素:

sax 和 dom 不是相互排斥的,記住這點很重要。您可以使用 dom 來建立 sax 事件流,也可以使用 sax 來建立 dom 樹。事實上,用於建立 dom 樹的大多數解析器實際上都使用 sax 來完成這個任務!

從哪個角度梳理流程更合適?

運營管理系統是乙個輸入輸出的轉化系統,將一些原料 資訊輸入,轉化成產品和服務。而這個轉化過程是通過業務流程來實現的,但是,業務流程的各個步驟或活動,是由組織結構中各個部門的某個崗位或作業中心來完成的。各個部門 作業中心協同 合作,組成一條完整的業務流程,而業務流程完成一類業務,也就是生產出一類產品,...

H55 vs P55 配四核哪個更合適

h55.vs.p55 配四核哪個更合適 9月份發布的lynnfield核心core i7 i5平台第一次使用了雙晶元平台取代了之前的三晶元平台,隨著製造工藝的進步,處理器可以整合更多標準化模組,從bloomfield首次整合記憶體控制器,到lynnfield加入了pci e控制器,再到clarkda...

在阿里雲中 使用哪個作業系統更合適

sudo apt get update在ubuntu中是docker.io sudo apt get install docker cesudo apt get install docker enginelsb release cs 查詢版本號 debian分支deb arch amd64 stre...