Android: DOM vs SAX vs XMLPullParser parsing?

后端 未结 3 1601
鱼传尺愫
鱼传尺愫 2021-02-14 01:02

I am parsing XML Document using SAX Parser.

I want to know which is better and faster to work with DOM, SAX Parser or XMLPullPa

相关标签:
3条回答
  • 2021-02-14 01:29

    One aspect by which different kinds of parsers can be classified is whether they need to load the entire XML document into memory up front. Parsers based on the Document Object Model (DOM) do that: they parse XML documents into a tree structure, which can then be traversed in-memory to read its contents. This allows you to traverse a document in arbitrary order, and gives rise to some useful APIs that can be slapped on top of DOM, such as XPath, a path query language that has been specifically designed for extracting information from trees. Using DOM alone isn’t much of a benefit because its API is clunky and it’s expensive to always read everything into memory even if you don’t need to. Hence, DOM parsers are, in most cases, not the optimal choice to parse XML on Android.

    There are class of parsers that don’t need to load a document up front. These parsers are stream-based, which means they process an XML document while still reading it from the data source (the Web or a disk). This implies that you do not have random access to the XML tree as with DOM because no internal representation of the document is being maintained. Stream parsers can be further distinguished from each other. There are push parsers that, while streaming the document, will call back to your application when encountering a new element. SAX parsers, fall into this class. Then there are pull parsers, which are more like iterators or cursors: here the client must explicitly ask for the next element to be retrieved.

    Source: Android in Practice.

    0 讨论(0)
  • 2021-02-14 01:39

    it depends on what are you doing , if you have very large files then you should use SAX parser since it will fire events and releasing them ,nothing is stored in memory ,and using SAX parser you can't access element in a random way there is no going back ! , but Dom let you access any part of the xml file since it keeps the whole file/document in memory . hope this answer you question .

    if you want to know which fastest parser Xerces is going to be the fastest you'll find and SAX parser should give you more performance than Dom

    0 讨论(0)
  • 2021-02-14 01:42

    The SAX XML Parser already available into the Android SDK.

    http://developer.android.com/reference/org/xml/sax/XMLReader.html

    so it is easy to access.

    0 讨论(0)
提交回复
热议问题