Typically, if you just want to retrieve one specific datum in an XML file (such as, e.g., the text of one specific dialog) a SAX parser will give you faster access times because it does not have to instantiate as many objects as the DOM parser does when it builds a complete tree-representation of the XML document. You say that the SAX parser has to go through the whole document, which is true, but the DOM parser has to do that too, of course, or else it couldn't build the document.
That said, you need to know your use case. Do you want to keep all text dialogue/events in memory at all times, or do you just occasionally want to read from disk? The DOM parser takes more time to read in a long document, but once you have the DOM tree, you can probably query specific data points faster than reading the XML again and again with a SAX parser.
However, if you plan on keeping all text in memory at all times, you might want to consider a completely different data structure than the DOM tree. If you think, e.g., about a HashMap or something like this as a custom data structure, than a SAX parser could be used to easily and quickly populate your data structure when the game is initialized. Using your own data structure might give you advantages in terms of in-memory size as well as access time.
Finally, XML in general might not be the best solution if you're actually thinking of tons of data. It's not the most human-friendly data format for one, but also, there are simply better (read: specifically made for that) solutions to handling large data. For example, you could use a slim data base, such as e.g. sqlite instead. This way, you don't have to worry about parsing at all.