Did you really mean the flyweight pattern? Or did think about something like lazy loading (or maybe "lazy parsing")? Using the flyweight pattern would require the parser to recognize elements that have the same content (and structure). That would be time consuming operation (and I fear, it would be space consuming also). Additionally, at which depth should the parser begin to recognize flyweights?
In fact, I can't imagine there is any DOM parser recognizing flyweights. And there also will be no DOM parser using lazy loading. This is the nature of DOM: Parse the whole XML file and produce a data structure for a highly flexible and random navigation.
Maybe you could indeed switch to a streaming process by using SAX or StAX. Of course you would lose the ability of flexible and random navigation, as you now must process you elements "on the fly".
However, there is a parser called VTD-XML. This was developped with memory efficiency in mind. It also loads the whole XML file into memory and provides some methods for navigating through the elements. But be warned: This navigation is somewhat complicated and not very intuitive (due to the nature of memory efficient storing). But maybe this is something you could use.