Similar thing in my project, the input files are tremendously huge, so we have written a program called as xmlfilesplitter which splits the large xml file into many smaller files(you can have a limit of say 20 records per file) and use that as input wherever you want. To do this, you can use the opening tag name, say <item> and closing tag name </item> or whatever as the start and end point. [ May 26, 2007: Message edited by: v ray ]
Though I have not worked much on STAX (Streaming API for XML ; JAXP 1.3 onwards).You might consider.
Stax will give you the advantage of SAX (low on memory) and feature of DOM (editing/creation of XML) with which you can read and construct another xml on the fly without the nodes that you do not want.