use of javax.xml.transform.dom.DOMResult in project camel by apache.
the class TidyMarkupDataFormat method asNodeTidyMarkup.
/**
* Return the HTML Markup as an {@link org.w3c.dom.Node}
*
* @param inputStream
* The input Stream to convert
* @return org.w3c.dom.Node The HTML Markup as a DOM Node
* @throws CamelException
*/
public Node asNodeTidyMarkup(InputStream inputStream) throws CamelException {
XMLReader parser = createTagSoupParser();
StringWriter w = new StringWriter();
parser.setContentHandler(createContentHandler(w));
try {
Transformer transformer = TransformerFactory.newInstance().newTransformer();
DOMResult result = new DOMResult();
transformer.transform(new SAXSource(parser, new InputSource(inputStream)), result);
return result.getNode();
} catch (Exception e) {
throw new CamelException("Failed to convert the HTML to tidy Markup", e);
}
}
use of javax.xml.transform.dom.DOMResult in project j2objc by google.
the class TransformerIdentityImpl method createResultContentHandler.
/**
* Create a result ContentHandler from a Result object, based
* on the current OutputProperties.
*
* @param outputTarget Where the transform result should go,
* should not be null.
*
* @return A valid ContentHandler that will create the
* result tree when it is fed SAX events.
*
* @throws TransformerException
*/
private void createResultContentHandler(Result outputTarget) throws TransformerException {
if (outputTarget instanceof SAXResult) {
SAXResult saxResult = (SAXResult) outputTarget;
m_resultContentHandler = saxResult.getHandler();
m_resultLexicalHandler = saxResult.getLexicalHandler();
if (m_resultContentHandler instanceof Serializer) {
// Dubious but needed, I think.
m_serializer = (Serializer) m_resultContentHandler;
}
} else if (outputTarget instanceof DOMResult) {
DOMResult domResult = (DOMResult) outputTarget;
Node outputNode = domResult.getNode();
Node nextSibling = domResult.getNextSibling();
Document doc;
short type;
if (null != outputNode) {
type = outputNode.getNodeType();
doc = (Node.DOCUMENT_NODE == type) ? (Document) outputNode : outputNode.getOwnerDocument();
} else {
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
if (m_isSecureProcessing) {
try {
dbf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
} catch (ParserConfigurationException pce) {
}
}
DocumentBuilder db = dbf.newDocumentBuilder();
doc = db.newDocument();
} catch (ParserConfigurationException pce) {
throw new TransformerException(pce);
}
outputNode = doc;
type = outputNode.getNodeType();
((DOMResult) outputTarget).setNode(outputNode);
}
DOMBuilder domBuilder = (Node.DOCUMENT_FRAGMENT_NODE == type) ? new DOMBuilder(doc, (DocumentFragment) outputNode) : new DOMBuilder(doc, outputNode);
if (nextSibling != null)
domBuilder.setNextSibling(nextSibling);
m_resultContentHandler = domBuilder;
m_resultLexicalHandler = domBuilder;
} else if (outputTarget instanceof StreamResult) {
StreamResult sresult = (StreamResult) outputTarget;
try {
Serializer serializer = SerializerFactory.getSerializer(m_outputFormat.getProperties());
m_serializer = serializer;
if (null != sresult.getWriter())
serializer.setWriter(sresult.getWriter());
else if (null != sresult.getOutputStream())
serializer.setOutputStream(sresult.getOutputStream());
else if (null != sresult.getSystemId()) {
String fileURL = sresult.getSystemId();
if (fileURL.startsWith("file:///")) {
if (fileURL.substring(8).indexOf(":") > 0) {
fileURL = fileURL.substring(8);
} else {
fileURL = fileURL.substring(7);
}
} else if (fileURL.startsWith("file:/")) {
if (fileURL.substring(6).indexOf(":") > 0) {
fileURL = fileURL.substring(6);
} else {
fileURL = fileURL.substring(5);
}
}
m_outputStream = new java.io.FileOutputStream(fileURL);
serializer.setOutputStream(m_outputStream);
} else
//"No output specified!");
throw new TransformerException(XSLMessages.createMessage(XSLTErrorResources.ER_NO_OUTPUT_SPECIFIED, null));
m_resultContentHandler = serializer.asContentHandler();
} catch (IOException ioe) {
throw new TransformerException(ioe);
}
} else {
//"Can't transform to a Result of type "
throw new TransformerException(XSLMessages.createMessage(XSLTErrorResources.ER_CANNOT_TRANSFORM_TO_RESULT_TYPE, new Object[] { outputTarget.getClass().getName() }));
// + outputTarget.getClass().getName()
// + "!");
}
if (m_resultContentHandler instanceof DTDHandler)
m_resultDTDHandler = (DTDHandler) m_resultContentHandler;
if (m_resultContentHandler instanceof DeclHandler)
m_resultDeclHandler = (DeclHandler) m_resultContentHandler;
if (m_resultContentHandler instanceof LexicalHandler)
m_resultLexicalHandler = (LexicalHandler) m_resultContentHandler;
}
use of javax.xml.transform.dom.DOMResult in project j2objc by google.
the class TransformerImpl method createSerializationHandler.
/**
* Create a ContentHandler from a Result object and an OutputProperties.
*
* @param outputTarget Where the transform result should go,
* should not be null.
* @param format The OutputProperties object that will contain
* instructions on how to serialize the output.
*
* @return A valid ContentHandler that will create the
* result tree when it is fed SAX events.
*
* @throws TransformerException
*/
public SerializationHandler createSerializationHandler(Result outputTarget, OutputProperties format) throws TransformerException {
SerializationHandler xoh;
// If the Result object contains a Node, then create
// a ContentHandler that will add nodes to the input node.
org.w3c.dom.Node outputNode = null;
if (outputTarget instanceof DOMResult) {
outputNode = ((DOMResult) outputTarget).getNode();
org.w3c.dom.Node nextSibling = ((DOMResult) outputTarget).getNextSibling();
org.w3c.dom.Document doc;
short type;
if (null != outputNode) {
type = outputNode.getNodeType();
doc = (org.w3c.dom.Node.DOCUMENT_NODE == type) ? (org.w3c.dom.Document) outputNode : outputNode.getOwnerDocument();
} else {
boolean isSecureProcessing = m_stylesheetRoot.isSecureProcessing();
doc = org.apache.xml.utils.DOMHelper.createDocument(isSecureProcessing);
outputNode = doc;
type = outputNode.getNodeType();
((DOMResult) outputTarget).setNode(outputNode);
}
DOMBuilder handler = (org.w3c.dom.Node.DOCUMENT_FRAGMENT_NODE == type) ? new DOMBuilder(doc, (org.w3c.dom.DocumentFragment) outputNode) : new DOMBuilder(doc, outputNode);
if (nextSibling != null)
handler.setNextSibling(nextSibling);
String encoding = format.getProperty(OutputKeys.ENCODING);
xoh = new ToXMLSAXHandler(handler, (LexicalHandler) handler, encoding);
} else if (outputTarget instanceof SAXResult) {
ContentHandler handler = ((SAXResult) outputTarget).getHandler();
if (null == handler)
throw new IllegalArgumentException("handler can not be null for a SAXResult");
LexicalHandler lexHandler;
if (handler instanceof LexicalHandler)
lexHandler = (LexicalHandler) handler;
else
lexHandler = null;
String encoding = format.getProperty(OutputKeys.ENCODING);
String method = format.getProperty(OutputKeys.METHOD);
ToXMLSAXHandler toXMLSAXHandler = new ToXMLSAXHandler(handler, lexHandler, encoding);
toXMLSAXHandler.setShouldOutputNSAttr(false);
xoh = toXMLSAXHandler;
String publicID = format.getProperty(OutputKeys.DOCTYPE_PUBLIC);
String systemID = format.getProperty(OutputKeys.DOCTYPE_SYSTEM);
if (systemID != null)
xoh.setDoctypeSystem(systemID);
if (publicID != null)
xoh.setDoctypePublic(publicID);
if (handler instanceof TransformerClient) {
XalanTransformState state = new XalanTransformState();
((TransformerClient) handler).setTransformState(state);
((ToSAXHandler) xoh).setTransformState(state);
}
} else // result tree to either a stream or a writer.
if (outputTarget instanceof StreamResult) {
StreamResult sresult = (StreamResult) outputTarget;
try {
SerializationHandler serializer = (SerializationHandler) SerializerFactory.getSerializer(format.getProperties());
if (null != sresult.getWriter())
serializer.setWriter(sresult.getWriter());
else if (null != sresult.getOutputStream())
serializer.setOutputStream(sresult.getOutputStream());
else if (null != sresult.getSystemId()) {
String fileURL = sresult.getSystemId();
if (fileURL.startsWith("file:///")) {
if (fileURL.substring(8).indexOf(":") > 0)
fileURL = fileURL.substring(8);
else
fileURL = fileURL.substring(7);
} else if (fileURL.startsWith("file:/")) {
if (fileURL.substring(6).indexOf(":") > 0)
fileURL = fileURL.substring(6);
else
fileURL = fileURL.substring(5);
}
m_outputStream = new java.io.FileOutputStream(fileURL);
serializer.setOutputStream(m_outputStream);
xoh = serializer;
} else
//"No output specified!");
throw new TransformerException(XSLMessages.createMessage(XSLTErrorResources.ER_NO_OUTPUT_SPECIFIED, null));
// handler = serializer.asContentHandler();
// this.setSerializer(serializer);
xoh = serializer;
}// }
catch (IOException ioe) {
throw new TransformerException(ioe);
}
} else {
//"Can't transform to a Result of type "
throw new TransformerException(XSLMessages.createMessage(XSLTErrorResources.ER_CANNOT_TRANSFORM_TO_RESULT_TYPE, new Object[] { outputTarget.getClass().getName() }));
//+ outputTarget.getClass().getName()
//+ "!");
}
// before we forget, lets make the created handler hold a reference
// to the current TransformImpl object
xoh.setTransformer(this);
SourceLocator srcLocator = getStylesheet();
xoh.setSourceLocator(srcLocator);
return xoh;
}
use of javax.xml.transform.dom.DOMResult in project camel by apache.
the class TemplatesFactory method getTemplates.
/**
* Generate the schematron template for given rule.
*
* @param rules the schematron rules
* @param fac the transformer factory.
* @return schematron template.
*/
public Templates getTemplates(final InputStream rules, final TransformerFactory fac) {
Node node = null;
Source source = new StreamSource(rules);
try {
for (String template : PIPELINE) {
String path = Constants.SCHEMATRON_TEMPLATES_ROOT_DIR.concat("/").concat(template);
InputStream xsl = this.getClass().getClassLoader().getResourceAsStream(path);
Transformer t = fac.newTransformer(new StreamSource(xsl));
DOMResult result = new DOMResult();
t.transform(source, result);
source = new DOMSource(node = result.getNode());
}
return fac.newTemplates(new DOMSource(node));
} catch (Exception e) {
logger.error(e.getMessage(), e);
throw new SchematronConfigException(e);
}
}
use of javax.xml.transform.dom.DOMResult in project camel by apache.
the class XQueryBuilder method evaluateAsDOM.
public Node evaluateAsDOM(Exchange exchange) throws Exception {
LOG.debug("evaluateAsDOM: {} for exchange: {}", expression, exchange);
initialize(exchange);
DOMResult result = new DOMResult();
DynamicQueryContext context = createDynamicContext(exchange);
XQueryExpression expression = getExpression();
expression.pull(context, result, properties);
return result.getNode();
}
Aggregations