|
Duplicate :
|
|
|
Duplicate :
|
|
|
Relates :
|
|
|
Relates :
|
Customer reported an issue where setting writer.getDomConfig().setParameter("xml-declaration", true); produces no line break after the xml headers.
Expected:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<item/>
</root>
Actual:
<?xml version="1.0" encoding="UTF-8"?><root> <<<<--- missing line break after header
</item>
</root>
import java.io.ByteArrayOutputStream;
import java.io.StringWriter;
import java.io.Writer;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.*;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.bootstrap.DOMImplementationRegistry;
import org.w3c.dom.ls.DOMImplementationLS;
import org.w3c.dom.ls.LSOutput;
import org.w3c.dom.ls.LSSerializer;
public class TestToStringLS {
public static void main(final String[] args) {
try {
final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
final DocumentBuilder builder = dbf.newDocumentBuilder();
final Document doc = builder.newDocument();
final Element element = doc.createElement("root");
doc.appendChild(element);
final Element itemElement = doc.createElement("item");
element.appendChild(itemElement);
itemElement.appendChild(itemElement.getOwnerDocument().createTextNode(""));
System.out.println("------------W3C----------");
writeDocument(doc);
} catch (final Exception ex) {
ex.printStackTrace();
}
}
public static final void writeDocument(final Document doc) {
final ByteArrayOutputStream outStream = new ByteArrayOutputStream();
DOMImplementationRegistry domRegistry = null;
try {
domRegistry = DOMImplementationRegistry.newInstance();
final DOMImplementationLS impl =
(DOMImplementationLS) domRegistry.getDOMImplementation("LS");
final LSSerializer writer = impl.createLSSerializer();
writer.getDomConfig().setParameter("xml-declaration", true);
writer.getDomConfig().setParameter("format-pretty-print", true);
final LSOutput output = impl.createLSOutput();
output.setEncoding("UTF-8");
output.setByteStream(outStream);
writer.write(doc, output);
final byte[] result = outStream.toByteArray();
System.out.println(new String(result));
} catch (final Exception e) {
System.err.println("ERROR" + e.getMessage());
e.printStackTrace();
}
}
}
|