use of com.siemens.ct.exi.api.sax.EXISource in project arctic-sea by 52North.
the class XmlToExiConverter method decode.
protected void decode(String fileName) {
try (InputStream exiIS = FileUtils.openInputStream(getFile(fileName, EXI_EXTENSION));
OutputStream os = FileUtils.openOutputStream(getFile(fileName, XML_EXTENSION_2))) {
Reader reader = new InputStreamReader(exiIS, "ISO-8859-1");
InputSource is = new InputSource(reader);
is.setEncoding("ISO-8859-1");
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
EXISource exiSource = new EXISource();
XMLReader exiReader = exiSource.getXMLReader();
SAXSource saxSource = new SAXSource(is);
// SAXSource saxSource = new SAXSource(new InputSource(exiIS));
exiSource.setXMLReader(exiReader);
transformer.transform(saxSource, new StreamResult(os));
} catch (Exception e) {
System.out.println(e.getStackTrace());
}
}
use of com.siemens.ct.exi.api.sax.EXISource in project arctic-sea by 52North.
the class EXIBinding method decode.
/**
* Parse the incoming EXI encoded {@link InputStream} transform to
* {@link XmlObject}
*
* @param request
* {@link HttpServletRequest} with EXI encoded
* {@link InputStream}
* @return {@link XmlObject} created from the EXI encoded
* {@link InputStream}
* @throws OwsExceptionReport
* If an error occurs during parsing
*/
protected XmlObject decode(HttpServletRequest request) throws OwsExceptionReport {
try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
EXIFactory ef = this.exiUtils.newEXIFactory();
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
if (ef.isFragment()) {
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
}
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.ENCODING, StandardCharsets.UTF_8.name());
// decode EXI encoded InputStream
EXISource exiSource = new EXISource(ef);
XMLReader exiReader = exiSource.getXMLReader();
InputSource inputSource = new InputSource(request.getInputStream());
inputSource.setEncoding(request.getCharacterEncoding());
SAXSource saxSource = new SAXSource(inputSource);
saxSource.setXMLReader(exiReader);
transformer.transform(saxSource, new StreamResult(os));
// create XmlObject from OutputStream
return XmlHelper.parseXmlString(os.toString(StandardCharsets.UTF_8.name()));
} catch (IOException | EXIException ex) {
throw new NoApplicableCodeException().causedBy(ex).withMessage("Error while reading request! Message: %s", ex.getMessage());
} catch (TransformerException ex) {
throw new NoApplicableCodeException().causedBy(ex).withMessage("Error while transforming request! Message: %s", ex.getMessage());
} catch (DecodingException ex) {
throw new NoApplicableCodeException().causedBy(ex).withMessage("Error while parsing request! Message: %s", ex.getMessage());
}
}
Aggregations