package com.mycompany.iotest;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
public class FileTest {
public void readZipFile(File thefile){
StringBuffer xmlList = new StringBuffer();
StringBuffer directories = new StringBuffer();
try {
ZipFile zfile = new ZipFile(thefile);
Enumeration emu = zfile.entries();
int i = 1;
Object obj = null;
while ( emu.hasMoreElements() ) {
obj = emu.nextElement();
String temp = obj.toString();
System.out.println(i++ +" : "+ temp);
ZipEntry entry = (ZipEntry)obj;
System.out.println("entry name = "+entry.getName());
//collect xml files
if ( temp.endsWith("xml") ) {
xmlList.append(temp.substring(temp.lastIndexOf("/")+1));
xmlList.append("/n");
}
//collect directories
if ( entry.isDirectory() ) {
directories.append(entry.getName());
directories.append("/n");
}
}
System.out.println("***********************************");
System.out.println("XML Files : /n"+xmlList.toString());
System.out.println("Directories : /n"+directories);
} catch ( ZipException e ) {
e.printStackTrace();
} catch ( IOException e ) {
e.printStackTrace();
}
}
public void readXMLInZip(File thefile){
InputStream inputstream = null;
try {
ZipFile zip = new ZipFile(thefile);
ZipEntry entry = zip.getEntry("WEB-INF/web.xml");
inputstream = zip.getInputStream(entry);
} catch ( ZipException e ) {
e.printStackTrace();
} catch ( IOException e ) {
e.printStackTrace();
}
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputstream));
InputSource inputSource = new InputSource(bufferedReader);
DocumentBuilder builder = null;
Document doc = null;
DocumentBuilderFactory dom = DocumentBuilderFactory.newInstance();
try {
builder = dom.newDocumentBuilder();
} catch ( ParserConfigurationException e ) {
e.printStackTrace();
}
try {
doc = builder.parse(inputSource);
// doc = builder.parse(inputstream);
} catch ( SAXException e ) {
e.printStackTrace();
} catch ( IOException e ) {
e.printStackTrace();
}
if ( doc!=null ) {
Node node = doc.getFirstChild();
System.out.println("NamespaceURI is : "+node.getNamespaceURI());
System.out.println("First Node Name is : "+node.getNodeName());
} else {
System.out.println("doc is null !!!");
}
}
public static void main( String[] args ) {
FileTest ft = new FileTest();
// File thefile = new File( "F://onlinehome.war" );
File thefile = new File( "F://struts-example.war" );
ft.readXMLInZip(thefile);
}
}
********************************** with dom4j *******************************************
package com.mycompany.iotest;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentFactory;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
public class FileTest {
public void readXMLInZipByDom4j(File thefile){
InputStream inputstream = null;
try {
ZipFile zip = new ZipFile(thefile);
ZipEntry entry = zip.getEntry("WEB-INF/web.xml");
inputstream = zip.getInputStream(entry);
} catch ( ZipException e ) {
e.printStackTrace();
} catch ( IOException e ) {
e.printStackTrace();
}
Document domdoc = null;
// DocumentFactory docfactory = DocumentFactory.getInstance();
SAXReader saxReader = new SAXReader();
// SAXReader saxReader = new SAXReader(docfactory);
try {
domdoc = saxReader.read(inputstream);
} catch (DocumentException e) {
e.printStackTrace();
}
if ( domdoc!=null ) {
int elenum = 1;
Element element = domdoc.getRootElement();
System.out.println("RootElement : "+element.getName());
List list = element.elements();
for (Iterator it = list.iterator(); it.hasNext();) {
Element elemt = (Element) it.next();
System.out.println(elenum++ +" : "+ elemt.getName());
}
} else {
System.out.println("domdoc is null !!!");
}
}
public static void main( String[] args ) {
FileTest ft = new FileTest();
// File thefile = new File( "F://onlinehome.war" );
File thefile = new File( "D://ut_web.war" );
ft.readXMLInZipByDom4j(thefile);
}
}