DOM: The whole XML document is loaded into memory and from there you acutally do a XML node walk to parse the document. This limits the size of XML documents you can or may want to load into memory - but you don't need a complex logic to know your context.
SAX: The SAX parser is event driven and you get an event for each XML element and attribute that is hit by the parser. There is almost no limit to the size of XML documents you can parse - but you need a logic to know the contect because the events themselves will only give you the name of the XML element or attribute and their values but no context informtion (for example what the parent was).
Personally, I also prefer SAX over DOM.
HTH, RealHeavyDude.