All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.docx4j.utils.XmlSerializerUtil Maven / Gradle / Ivy

Go to download

docx4j is a library which helps you to work with the Office Open XML file format as used in docx documents, pptx presentations, and xlsx spreadsheets.

The newest version!
package org.docx4j.utils;

import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;

import org.docx4j.openpackaging.exceptions.Docx4JException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class XmlSerializerUtil {

	private static Logger log = LoggerFactory.getLogger(XmlSerializerUtil.class);	
	
	public static void serialize(Source source, Result result,
			boolean omit_xml_declaration, boolean method_xml) throws Docx4JException {
		
		serialize( source, result, omit_xml_declaration,  method_xml, false);
	}

	/**
	 * @param source
	 * @param result
	 * @param omit_xml_declaration
	 * @param method_xml
	 * @param indent
	 * @throws Docx4JException
	 * 
	 * @since 3.3.1
	 */
	public static void serialize(Source source, Result result,
			boolean omit_xml_declaration, boolean method_xml, boolean indent) throws Docx4JException {
		
		// Xalan <= 2.7.2 can't handle astral characters: https://issues.apache.org/jira/browse/XALANJ-2419
		// but org.docx4j.org.apache.xalan repackaging is patched to fix this
		
		try {
			Transformer serializer = new org.docx4j.org.apache.xalan.transformer.TransformerIdentityImpl();
			
			if (omit_xml_declaration) {
				serializer.setOutputProperty(javax.xml.transform.OutputKeys.OMIT_XML_DECLARATION, "yes");
			}
			if (method_xml) {
				serializer.setOutputProperty(javax.xml.transform.OutputKeys.METHOD, "xml");	// probably the default anyway?			
			}
			if (indent) {
				serializer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, "yes");
				// actual indent amount is set in org/docx4j/org/apache/xml/serializer/docx4j_xalan_output_xml.properties 
			}
						
			serializer.transform( source, result );	
			
		} catch (Exception e) {
			
			log.error(e.getMessage(),e);
			throw new Docx4JException("Exception writing Document to OutputStream: " + e.getMessage(), e);
		}
	}
	
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy