view src/de/mpiwg/dwinter/fulltextSearchServer/Utils/XMLTools.java @ 0:db87c1b7eb6d

initial
author dwinter
date Wed, 03 Nov 2010 12:18:46 +0100
parents
children
line wrap: on
line source

package de.mpiwg.dwinter.fulltextSearchServer.Utils;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerFactoryConfigurationError;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

import org.w3c.dom.Document;
import org.xml.sax.SAXException;

public class XMLTools {

	/**
	 * @param xml String mit der XML-Datei
	 * @param xslPath Pfad auf die XSL Datei im Classpath
	 * @return xsl-transformiertes XML-File
	 * @throws TransformerFactoryConfigurationError
	 */
	public static String transformToHTML(String xml, String xslPath)
			throws TransformerFactoryConfigurationError {
		// String txt = IOUtils.toString(new FileInputStream(file));
		// get rid of the entities
		TransformerFactory tf = TransformerFactory.newInstance();
		
		InputStream res = XMLTools.class.getResourceAsStream(xslPath);
	
		Transformer t;
		try {
			t = tf.newTransformer(new StreamSource(res));
		} catch (TransformerConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
	

		
		//OutputStream output = new ByteArrayOutputStream();
		
		//BufferedWriter sw = new BufferedWriter(new OutputStreamWriter(output, "utf-8"));

		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		dbf.setNamespaceAware(true);
		dbf.setValidating(false);
		DocumentBuilder db;
		try {
			db = dbf.newDocumentBuilder();
		} catch (ParserConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
		//db.setEntityResolver(new MyResolver());
		
		Document doc;
		try {
			//stream = new StringInputStream(xml,"utf-8");
			
			ByteArrayInputStream stream = new ByteArrayInputStream(xml.getBytes("utf-8"));
			doc = db.parse(stream);
			
		
		} catch (SAXException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
		
		StringWriter sw = new StringWriter();
		StreamResult sr = new StreamResult(sw);
		
		//org.w3c.dom.Document tgtDoc = db.newDocument(); 
		//DocumentFragment fragment = tgtDoc.createDocumentFragment(); 
		//DOMResult tgtDom = new DOMResult( fragment ); 
		
	
		t.setOutputProperty(OutputKeys.ENCODING, "utf-8");
		try {
			t.transform(new DOMSource(doc), sr);
		} catch (TransformerException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		String txt = sw.toString();
		return txt;
	}
	
}