To determine which interface is suitable for you, you need to understand the design points of all interfaces, and what you need to understand what the application will do with the XML document you want to process. Considering the following questions will help you find the right way.
Do you want to write an application with Java? JAXP uses DOM, SAX and JDOM; if you write code with Java, you should use JAXP to isolate your code with various parser.
How will the application deploy? If your application will be deployed as a Java Applet, you will want to minimize the number of code to download, don't forget that the SAX parser is smaller than the DOM parser. Also knowing when using JDOM, in addition to the SAX or DOM parser, a small amount of code is required.
Once the XML document is parsed, do you need to access those data multiple times? If you need to go back and access the resolution version of the XML file, the DOM may be the correct choice. When the SAX event is triggered, if you need it later, you decide yourself to save it in some way. If you need to access an event that you have never saved, you must resolve the file again. And DOM automatically saves all data.
I only need a small amount of content of the XML source file? If you only need a small amount of content of the XML source file, SAX may be the correct choice. SAX does not create objects for each thing in the source file; what you want to determine is important. Using SAX, you have to check each event to understand if it is related to your needs, and then handles it accordingly. Sometimes, once you find something you are looking for, your code will throw an exception to completely stop the SAX parser.
Are you working on a machine that is very memory? If so, no matter what you might consider, SAX is your best choice.