Difference among XML SAX parser, Pull parser & DOM Parser in android
Asked Answered
C

3

17

I want to know what's the difference between XML SAX parser, Pull parser & DOM parser in Android. In which condition, which one is better in performance and implementation?

Thanx. Khobaib.

Chalcanthite answered 2/7, 2012 at 16:7 Comment(0)
M
34

Dom Parser - It uses object based approach. i.e., it first loads the entire XML in memory, converts the XML nodes into objects and then starts parsing them. So, it is pretty slower.

SAX and PULL Parser - they use event based approach. Both are almost same in terms of memory and performance. However there are few distinguishing situations on when to use them as described below.

Dom Parser - Use it when you need to validate the entire XML before parsing. Never use it when the XML is too large and validation can be compromised. Once it starts parsing, it parses from starting node to ending node. there is no way to parse only particular nodes.

SAX - Use it when you want to parse the entire XML. Once it starts parsing, it parses from starting node to ending node. there is no way to parse only particular nodes.

PULL - Use it when you don't want to parse the entire XML. It is easier to implement than SAX, because you don't have to maintain the state of your parser. You can pull only a particular node you are interested at.

My suggestion is - Need validation - Go for DOM, File size is small or you are not interested in parsing of entire XML- Go for PULL, File size is large or you need to parse the entire XML file - Go for SAX.

Misdoing answered 2/7, 2014 at 10:40 Comment(1)
SAX has issue with self close tag #2708031Commissure
C
14

Sax Parser : Simple API of XML Parse node to node, using top-down traversing, parse without storing xml, Faster compared to Dom Manipulating of node like insertion or deletion is allowed. Needs SAXParserFactory

Dom Parser : Document Object Model Stores entire xml in memory before processing, traverse in any direction, Manipulating of node like insertion or deletion is NOT allowed. Needs DocumentBuilderFactory

Pull Parser: It provides more control and speed from the above two. Needs pullParserFactory

Caren answered 2/7, 2012 at 16:18 Comment(3)
Isn't it contrarily with Sax and DOM? Dom does allow insertion and deletion while Sax is only a parser? Reference: docs.oracle.com/javase/6/docs/api/org/w3c/dom/Document.htmlRumrunner
Hey, admins, please edit the answer (because this one has the most votes) according to above comment: DOM allows nodes inserting/deleting, while SAX doesn'tHydrotaxis
How come Sax is faster than Pull ? For Pull, you can even stop parsing while reading, so it means you can do less work if needed...Hartzke
D
0

As far as performance, SAX will generally use much less memory. And you only handle the events you want, e.g. startElement(), startDocument(), endElement(), etc. etc., and thus you will only save specific data you want. DOM will load the entire XML file into memory.

Deianira answered 2/7, 2012 at 16:18 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.