@Override public ToXmlGenerator createGenerator(OutputStream out) throws IOException { return createGenerator(out, JsonEncoding.UTF8); }
@Override public XContentGenerator createGenerator(OutputStream outputStream) throws IOException { return new XmlXContentGenerator(xmlFactory.createGenerator(outputStream, JsonEncoding.UTF8)); }
@Override public XContentGenerator createGenerator(Writer writer) throws IOException { return new XmlXContentGenerator(xmlFactory.createGenerator(writer)); }
/** * Method for serializing given value using specific {@link XMLStreamReader}: * useful when building large XML files by binding individual items, one at * a time. * * @since 2.4 */ public void writeValue(XMLStreamWriter w0, Object value) throws IOException { @SuppressWarnings("resource") ToXmlGenerator g = getFactory().createGenerator(w0); super.writeValue(g, value); /* NOTE: above call should do flush(); and we should NOT close here. * Finally, 'g' has no buffers to release. */ }
JsonGenerator xg = xf.createGenerator(...);
@Override public void writeRawField(String fieldName, byte[] content, OutputStream outputStream) throws IOException { writeFieldNameWithNamespace(fieldName); try (JsonParser parser = params.getXmlFactory().createParser(content)) { parser.nextToken(); params.getXmlFactory().createGenerator(outputStream).copyCurrentStructure(parser); } }
@Override public void writeRawField(String fieldName, byte[] content, int offset, int length, OutputStream outputStream) throws IOException { writeFieldNameWithNamespace(fieldName); try (JsonParser parser = params.getXmlFactory().createParser(content, offset, length)) { parser.nextToken(); params.getXmlFactory().createGenerator(outputStream).copyCurrentStructure(parser); } }
@Override public void writeRawField(String fieldName, BytesReference content, OutputStream outputStream) throws IOException { writeFieldNameWithNamespace(fieldName); try (JsonParser parser = params.getXmlFactory().createParser(content.streamInput())) { parser.nextToken(); params.getXmlFactory().createGenerator(outputStream).copyCurrentStructure(parser); } }
@Override public void exportStream(OutputStream outputStream, Iterator<T> iterator) throws IOException, ClassNotFoundException, IllegalAccessException { JacksonXmlModule module = new JacksonXmlModule(); module.setDefaultUseWrapper(false); XmlMapper xmlMapper = new XmlMapper(module); XmlFactory factory = new XmlFactory(); ToXmlGenerator generator = factory.createGenerator(outputStream); generator.setCodec(xmlMapper); generator.writeRaw("<xml>"); while (iterator.hasNext()) { generator.writeRaw(xmlMapper.writeValueAsString(iterator.next())); } generator.writeRaw("</xml>"); generator.flush(); } }
/** * Method for serializing given value using specific {@link XMLStreamReader}: * useful when building large XML files by binding individual items, one at * a time. */ @SuppressWarnings("resource") public void writeValue(XMLStreamWriter w0, Object value) throws IOException { // 04-Oct-2017, tatu: Unfortunately can not simply delegate to super-class implementation // because we need the context first... SerializationConfig config = serializationConfig(); DefaultSerializerProvider prov = _serializerProvider(config); ToXmlGenerator g = tokenStreamFactory().createGenerator(prov, w0); if (config.isEnabled(SerializationFeature.CLOSE_CLOSEABLE) && (value instanceof Closeable)) { _writeCloseableValue(g, value, config); } else { _serializerProvider(config).serializeValue(g, value); if (config.isEnabled(SerializationFeature.FLUSH_AFTER_WRITE_VALUE)) { g.flush(); } } }