diff 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 diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/de/mpiwg/dwinter/fulltextSearchServer/Utils/XMLTools.java	Wed Nov 03 12:18:46 2010 +0100
@@ -0,0 +1,107 @@
+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;
+	}
+	
+}