1 23 24 package org.dbforms.dom; 25 26 import org.apache.commons.logging.Log; 27 import org.apache.commons.logging.LogFactory; 28 29 import org.apache.xpath.domapi.XPathEvaluatorImpl; 30 31 import org.dbforms.util.Util; 32 33 import org.w3c.dom.Document ; 34 import org.w3c.dom.Element ; 35 import org.w3c.dom.xpath.XPathEvaluator; 36 37 import org.xml.sax.InputSource ; 38 39 import java.io.InputStream ; 40 import java.io.OutputStream ; 41 import java.io.StringReader ; 42 import java.io.StringWriter ; 43 44 import javax.xml.parsers.DocumentBuilder ; 45 import javax.xml.parsers.DocumentBuilderFactory ; 46 import javax.xml.transform.Transformer ; 47 import javax.xml.transform.TransformerFactory ; 48 import javax.xml.transform.dom.DOMSource ; 49 import javax.xml.transform.stream.StreamResult ; 50 51 52 53 59 public class DOMFactoryXALANImpl extends DOMFactory { 60 private DocumentBuilder builder = createDOMBuilder(); 61 private Log logCat = LogFactory.getLog(this.getClass().getName()); 62 private Transformer transformer = createDOMWriter(); 63 64 71 public String DOM2String(Document doc) { 72 StringWriter writer = new StringWriter (); 73 74 try { 75 StreamResult result = new StreamResult (writer); 76 DOMSource source = new DOMSource (doc); 77 transformer.transform(source, result); 78 } catch (Exception e) { 79 logCat.error("write", e); 80 } 81 82 String s = writer.toString(); 83 84 return s; 85 } 86 87 88 95 public Document String2DOM(String data) { 96 Document doc = null; 97 98 if (!Util.isNull(data)) { 99 try { 101 InputSource in = new InputSource (new StringReader (data)); 103 doc = builder.parse(in); 104 } catch (Exception e) { 105 logCat.error(e.getMessage() + "\n" + data); 106 } 107 } 108 109 return doc; 110 } 111 112 113 118 public Document newDOMDocument() { 119 return builder.newDocument(); 120 } 121 122 123 128 public XPathEvaluator newXPathEvaluator() { 129 return new XPathEvaluatorImpl(); 130 } 131 132 133 140 public Document read(InputStream in) { 141 Document doc = null; 142 143 try { 144 InputSource src = new InputSource (in); 145 doc = builder.parse(src); 146 } catch (Exception e) { 147 logCat.error(e); 148 } 149 150 return doc; 151 } 152 153 154 160 public void write(OutputStream out, 161 Element root) { 162 try { 163 StreamResult result = new StreamResult (out); 164 DOMSource source = new DOMSource (root); 165 transformer.transform(source, result); 166 } catch (Exception e) { 167 logCat.error("write", e); 168 } 169 } 170 171 172 private DocumentBuilder createDOMBuilder() { 173 DocumentBuilder res = null; 174 175 try { 176 DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance(); 178 dfactory.setValidating(false); 179 dfactory.setNamespaceAware(false); 180 res = dfactory.newDocumentBuilder(); 181 } catch (Exception e) { 182 logCat.error(e); 183 } 184 185 return res; 186 } 187 188 189 private Transformer createDOMWriter() { 190 Transformer res = null; 191 192 try { 193 TransformerFactory transFactory = TransformerFactory.newInstance(); 194 res = transFactory.newTransformer(); 195 } catch (Exception e) { 196 logCat.error("createDOMWriter", e); 197 } 198 199 return res; 200 } 201 } 202 | Popular Tags |