/** * Copyright (c)2010-2011 Enterprise Website Content Management System(EWCMS), All rights reserved. * EWCMS PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * http://www.ewcms.com */ package com.ewcms.content.particular.util; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Enumeration; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; public final class XmlConvert { @SuppressWarnings("unchecked") public static List<Map<String, Object>> importXML(File xmlFile, String fileType){ if (xmlFile != null) { List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); try { List<InputStream> inputStreams = new ArrayList<InputStream>(); //FileType fileType = FileTypeJudge.getType(xmlFile); if (fileType.toLowerCase().equals("application/zip")){ inputStreams = parseXmlZIPFile(xmlFile); }else if (fileType.toLowerCase().equals("text/xml")){ InputStream in = new FileInputStream(xmlFile); inputStreams.add(in); }else{ return null; } if (!inputStreams.isEmpty()){ SAXReader reader = new SAXReader(); Document doc = null; for (InputStream inputStream : inputStreams){ try { doc = reader.read(inputStream); if (doc != null){ Element root = doc.getRootElement(); Element metaViewData; Element projecties; for (Iterator<?> metaViewDataIterator = root.elementIterator("MetaViewData"); metaViewDataIterator.hasNext();) { metaViewData = (Element) metaViewDataIterator.next(); for (Iterator<?> projectiesIterator = metaViewData.elementIterator("PROPERTIES"); projectiesIterator.hasNext();){ projecties = (Element) projectiesIterator.next(); List<Element> elements = projecties.elements(); if (!elements.isEmpty()){ Map<String, Object> map = new HashMap<String, Object>(); for (Element element : elements){ map.put(element.getName(), element.getData()); } list.add(map); } } } } } catch (DocumentException e) { } finally{ if (doc != null){ doc.clearContent(); doc = null; } } } } } catch (IOException e) { return null; } return list; } return null; } private static List<InputStream> parseXmlZIPFile(File zipFile) { List<InputStream> inputStreams = new ArrayList<InputStream>(); try { ZipFile zfile = new ZipFile(zipFile); Enumeration<? extends ZipEntry> zipEntries = zfile.entries(); ZipEntry zipEntry = null; while (zipEntries.hasMoreElements()) { try { zipEntry = (ZipEntry) zipEntries.nextElement(); inputStreams.add(zfile.getInputStream(zipEntry)); } catch (Exception e) { } finally{ } } } catch (Exception e) { } finally{ } return inputStreams; } }