Mercurial > hg > fulltextSearchServer
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; + } + +}