List of usage examples for javax.xml.transform TransformerFactory setFeature
public abstract void setFeature(String name, boolean value) throws TransformerConfigurationException;
Set a feature for this TransformerFactory and Transformer s or Template s created by this factory.
From source file:org.apache.syncope.installer.utilities.FileSystemUtils.java
public static void writeXML(final Document doc, final OutputStream out) throws IOException, TransformerException { final TransformerFactory factory = TransformerFactory.newInstance(); factory.setFeature(javax.xml.XMLConstants.FEATURE_SECURE_PROCESSING, true); final Transformer transformer = factory.newTransformer(); transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no"); transformer.setOutputProperty(OutputKeys.METHOD, "xml"); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); transformer.transform(new DOMSource(doc), new StreamResult(new OutputStreamWriter(out, Charset.forName("UTF-8")))); out.close();// w w w . j ava 2s . com }
From source file:org.apache.xml.security.transforms.implementations.TransformXSLT.java
protected XMLSignatureInput enginePerformTransform(XMLSignatureInput input, OutputStream baos, Transform transformObject) throws IOException, TransformationException { try {/*from www. j a v a 2s . c o m*/ Element transformElement = transformObject.getElement(); Element xsltElement = XMLUtils.selectNode(transformElement.getFirstChild(), XSLTSpecNS, "stylesheet", 0); if (xsltElement == null) { Object exArgs[] = { "xslt:stylesheet", "Transform" }; throw new TransformationException("xml.WrongContent", exArgs); } TransformerFactory tFactory = TransformerFactory.newInstance(); // Process XSLT stylesheets in a secure manner tFactory.setFeature("http://javax.xml.XMLConstants/feature/secure-processing", Boolean.TRUE); /* * This transform requires an octet stream as input. If the actual * input is an XPath node-set, then the signature application should * attempt to convert it to octets (apply Canonical XML]) as described * in the Reference Processing Model (section 4.3.3.2). */ Source xmlSource = new StreamSource(new ByteArrayInputStream(input.getBytes())); Source stylesheet; /* * This complicated transformation of the stylesheet itself is necessary * because of the need to get the pure style sheet. If we simply say * Source stylesheet = new DOMSource(this.xsltElement); * whereby this.xsltElement is not the rootElement of the Document, * this causes problems; * so we convert the stylesheet to byte[] and use this as input stream */ { ByteArrayOutputStream os = new ByteArrayOutputStream(); Transformer transformer = tFactory.newTransformer(); DOMSource source = new DOMSource(xsltElement); StreamResult result = new StreamResult(os); transformer.transform(source, result); stylesheet = new StreamSource(new ByteArrayInputStream(os.toByteArray())); } Transformer transformer = tFactory.newTransformer(stylesheet); // Force Xalan to use \n as line separator on all OSes. This // avoids OS specific signature validation failures due to line // separator differences in the transformed output. Unfortunately, // this is not a standard JAXP property so will not work with non-Xalan // implementations. try { transformer.setOutputProperty("{http://xml.apache.org/xalan}line-separator", "\n"); } catch (Exception e) { log.warn("Unable to set Xalan line-separator property: " + e.getMessage()); } if (baos == null) { ByteArrayOutputStream baos1 = new ByteArrayOutputStream(); StreamResult outputTarget = new StreamResult(baos1); transformer.transform(xmlSource, outputTarget); return new XMLSignatureInput(baos1.toByteArray()); } StreamResult outputTarget = new StreamResult(baos); transformer.transform(xmlSource, outputTarget); XMLSignatureInput output = new XMLSignatureInput((byte[]) null); output.setOutputStream(baos); return output; } catch (XMLSecurityException ex) { Object exArgs[] = { ex.getMessage() }; throw new TransformationException("generic.EmptyMessage", exArgs, ex); } catch (TransformerConfigurationException ex) { Object exArgs[] = { ex.getMessage() }; throw new TransformationException("generic.EmptyMessage", exArgs, ex); } catch (TransformerException ex) { Object exArgs[] = { ex.getMessage() }; throw new TransformationException("generic.EmptyMessage", exArgs, ex); } }
From source file:org.wso2.carbon.tools.wsdlvalidator.WsdlValidator.java
/** * Load XML data to a temporary file.//from ww w .j a v a 2 s . com * * @param document XML DOM * @return URL of the file * @throws IOException on error writing to file * @throws TransformerException on transforming error */ private URL loadXMLToFile(Document document) throws TransformerException, IOException { DOMSource source = new DOMSource(document); File tempFile = File.createTempFile("temp", ".txt"); tempFile.deleteOnExit(); FileWriter writer = new FileWriter(tempFile); StreamResult result = new StreamResult(writer); TransformerFactory transformerFactory; try { transformerFactory = TransformerFactory .newInstance("com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl", null); } catch (NoSuchMethodError e) { log.info("TransformerFactory.newInstance(String, ClassLoader) method not found. " + "Using TransformerFactory.newInstance()"); transformerFactory = TransformerFactory.newInstance(); } transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); Transformer transformer = transformerFactory.newTransformer(); transformer.transform(source, result); return tempFile.toURI().toURL(); }
From source file:org.wso2.carbon.wsdl2form.Util.java
/** * Load XML data to a temporary file.//from w w w. j a v a2 s .co m * * @param document XML URL * @return URL of the file * @throws IOException on error writing to file */ private static File loadXMLToFile(Document document) throws IOException { DOMSource source = new DOMSource(document); File tempFile = File.createTempFile("temp", ".txt"); tempFile.deleteOnExit(); try (FileWriter writer = new FileWriter(tempFile)) { StreamResult result = new StreamResult(writer); TransformerFactory transformerFactory = getTransformerFactory(); transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); Transformer transformer = transformerFactory.newTransformer(); transformer.transform(source, result); } catch (IOException e) { String msg = "Error occurred when creating FileWriter"; log.error(msg, e); throw new AxisFault(msg, e); } catch (TransformerException e) { String msg = "Error occurred when transforming the document safely"; log.error(msg, e); throw new AxisFault(msg, e); } return tempFile; }