Add utility method to XmlUtil

This commit is contained in:
jamesagnew 2020-07-26 17:54:45 -04:00
parent c6769ef075
commit a35c97e13d
2 changed files with 22 additions and 3 deletions

View File

@ -31,7 +31,7 @@ import org.apache.commons.text.StringEscapeUtils;
import org.codehaus.stax2.XMLOutputFactory2;
import org.codehaus.stax2.io.EscapingWriterFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
@ -49,7 +49,6 @@ import javax.xml.stream.XMLStreamWriter;
import javax.xml.stream.events.XMLEvent;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
@ -1890,11 +1889,18 @@ public class XmlUtil {
return builder.parse(src);
}
public static String encodeDocument(Element theElement) throws TransformerException {
public static String encodeDocument(Node theElement) throws TransformerException {
return encodeDocument(theElement, false);
}
public static String encodeDocument(Node theElement, boolean theIndent) throws TransformerException {
TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer = transFactory.newTransformer();
StringWriter buffer = new StringWriter();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
if (theIndent) {
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
}
transformer.transform(new DOMSource(theElement), new StreamResult(buffer));
return buffer.toString();
}

View File

@ -8,13 +8,16 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.stream.FactoryConfigurationError;
import javax.xml.stream.XMLStreamException;
import javax.xml.transform.TransformerException;
import java.io.IOException;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.fail;
@ -74,6 +77,16 @@ public class XmlUtilDstu3Test {
}
}
@Test
public void testEncodePrettyPrint() throws IOException, SAXException, TransformerException {
String input = "<document><tag id=\"1\"/></document>";
Document parsed = XmlUtil.parseDocument(input);
String output = XmlUtil.encodeDocument(parsed, true);
assertEquals("<document>\n" +
" <tag id=\"1\"/>\n" +
"</document>\n", output);
}
@Test
public void testApplyUnsupportedFeature() throws IOException, SAXException {
assertNotNull(XmlUtil.parseDocument("<document></document>"));