use of de.odysseus.staxon.json.JsonXMLOutputFactory in project hale by halestudio.
the class JsonXML method toJson.
public static void toJson(Reader xmlReader, Writer jsonWriter) throws XMLStreamException, FactoryConfigurationError, TransformerConfigurationException, TransformerException, TransformerFactoryConfigurationError {
/*
* If we want to insert JSON array boundaries for multiple elements, we
* need to set the <code>autoArray</code> property. If our XML source
* was decorated with <code><?xml-multiple?></code> processing
* instructions, we'd set the <code>multiplePI</code> property instead.
* With the <code>autoPrimitive</code> property set, element text gets
* automatically converted to JSON primitives (number, boolean, null).
*/
JsonXMLConfig config = new JsonXMLConfigBuilder().namespaceDeclarations(true).autoArray(true).autoPrimitive(true).prettyPrint(false).build();
/*
* Create source (XML).
*/
XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(xmlReader);
Source source = new StAXSource(reader);
/*
* Create result (JSON).
*/
// create stream factory manually due to class loading issues
XMLStreamWriter writer = new JsonXMLOutputFactory(config, new JsonStreamFactoryImpl()).createXMLStreamWriter(jsonWriter);
Result result = new StAXResult(writer);
/*
* Copy source to result via "identity transform".
*/
TransformerFactory.newInstance().newTransformer().transform(source, result);
}
Aggregations