PULL跟SAX雖然都是基於事件的,但是兩者最重要的差異應該是:
SAX可以認為是「PUSH「的,跟PULL相對。因為Parser在遇到特定事件來源的時候會將資料傳遞給回呼函數來處理,從這個意義上講資料是」推送「給使用者的,而PULL方式是遇到特定事件時由用戶去從Parser中獲取自己感興趣的,感覺資料像是」拉「下來的。
還有一個差異是:在PULL式解析過程中(while迴圈裡),可以退出」迴圈;但是在SAX過程中,一旦開始解析就要解析完成。
另外,稍微擴展下:
目前主要存在兩種解析與生成原理,一種是透過反射來匹配類別名稱、屬性名等信息,一種是直接使用jvm的字節碼來進行操作,這兩種方式的效率高下不言而喻,自然是二進位字節碼效率更高。
以上是XML PULL和PUSH技術的差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!