Reputation: 61
I've got problem with formatting white space in Java. I add new attribute to my file, but it hasn't correct format.
Attr attr = doc.createAttribute("name");
attr.setValue("name");
element.setAttributeNode(attr);
element.setTextContent("Something=" + this.thumbnailCacheSize);
NodeList items = doc.getElementsByTagName("mbean");
Node e = items.item(0);
e.appendChild(element);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT,"yes");
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(filepath);
transformer.transform(source,result);
It should look like this:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<server>
<mbean code="code" name="name">
<attribute name="name3">Something3=500</attribute>
<attribute name="name2">Something2=500</attribute>
<attribute name="name1">Something1=500</attribute>
<attribute name="name">Something=500</attribute>
</mbean>
</server>
But is like:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<server>
<mbean code="code" name="name">
<attribute name="name3">Something3=500</attribute>
<attribute name="name2">Something2=500</attribute>
<attribute name="name1">Something1=500</attribute>
<attribute name="name">Something=500</attribute>
</mbean>
</server>
When I used: transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
I get:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<server>
<mbean code="code" name="name">
<attribute name="name3">Something3=500</attribute>
<attribute name="name2">Something2=500</attribute>
<attribute name="name1">Something1=500</attribute>
<attribute name="name">Something=500</attribute>
</mbean>
</server>
Upvotes: 1
Views: 1102
Reputation: 2399
Try this.
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes"); // enable indent
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); // 4 is indent space (default is zero)
Upvotes: 1