Поскольку JAR-файлы также являются ZIP-файлами, если вы собираетесь делать это на Java, я бы использовал библиотеку java.util.zip. Хотя вам все равно придется рекурсивно открывать любые JAR-файлы, встроенные в WAR-файлы и EAR-файлы, это избавит вас от необходимости проходить по каталогам, содержащим плоские файлы. Вы также можете использовать подкласс JarFile ZipFile, предлагаемый библиотекой java.util.zip.
http://docs.oracle.com/javase/6/docs/api/java/util/zip/ZipFile.html
Я также, вероятно, не стал бы беспокоиться о парсере DOM для простой распечатки XML. Вы бы строили (потенциально большую) структуру в памяти, когда вместо этого могли бы печатать данные в поток по ходу. Также парсеры предназначены для синтаксического анализа XML в структуре данных, а не наоборот. Стандартные классы разбора Java DOM, javax.xml.parsers.DocumentBuilderFactory и javax.xml.parsers.DocumentBuilder не поставляются с командой «печать». Стандартный способ создания отформатированного текстового вывода из объекта org.w3c.dom.Document - это использование XSL-преобразователя (см. http://java.sun.com/webservices/reference/tutorials/jaxp/html/xslt.html#gghkq), и опять же, это, вероятно, больше проблем, чем стоит. Вы хотите расширить эту программу, но если все, что у вас здесь есть, это все, что нужно сделать, я бы не стал создавать большой объект DOM.