import java.io.ByteArrayInputStream;
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.Document;
public class Main {
public static void main
(String[] args
) { try {
String input
= "<asdf>\n\n<a>text</a></asdf>";
System.
out.
println("-- input -------------------\n" + input
+ "\n----------------------------"); System.
out.
println("-- output ------------------"); prettify(doc);
System.
out.
println("----------------------------");
}
public static void prettify
(Document doc
) { try {
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty("{http://x...content-available-to-author-only...e.org/xslt}indent-amount", "2");
transformer.
transform(new DOMSource
(doc
),
new StreamResult
(System.
out)); }
}
aW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07CgppbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeTsKaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uT3V0cHV0S2V5czsKaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXI7CmltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRmFjdG9yeTsKaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uZG9tLkRPTVNvdXJjZTsKaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uc3RyZWFtLlN0cmVhbVJlc3VsdDsKCmltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKCnB1YmxpYyBjbGFzcyBNYWluIHsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKCQl0cnkgewoJCQlTdHJpbmcgaW5wdXQgPSAiPGFzZGY+XG5cbjxhPnRleHQ8L2E+PC9hc2RmPiI7CgkJCURvY3VtZW50IGRvYyA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKS5uZXdEb2N1bWVudEJ1aWxkZXIoKS5wYXJzZShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oaW5wdXQuZ2V0Qnl0ZXMoKSkpOwoKCQkJU3lzdGVtLm91dC5wcmludGxuKCItLSBpbnB1dCAtLS0tLS0tLS0tLS0tLS0tLS0tXG4iICsgaW5wdXQgKyAiXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIik7CgkJCVN5c3RlbS5vdXQucHJpbnRsbigiLS0gb3V0cHV0IC0tLS0tLS0tLS0tLS0tLS0tLSIpOwoJCQlwcmV0dGlmeShkb2MpOwoJCQlTeXN0ZW0ub3V0LnByaW50bG4oIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKCgkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHt9Cgl9CgoJcHVibGljIHN0YXRpYyB2b2lkIHByZXR0aWZ5KERvY3VtZW50IGRvYykgewoJCXRyeSB7CgkJCVRyYW5zZm9ybWVyRmFjdG9yeSB0cmFuc2Zvcm1lckZhY3RvcnkgPSBUcmFuc2Zvcm1lckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKCQkJVHJhbnNmb3JtZXIgdHJhbnNmb3JtZXIgPSB0cmFuc2Zvcm1lckZhY3RvcnkubmV3VHJhbnNmb3JtZXIoKTsKCQkJdHJhbnNmb3JtZXIuc2V0T3V0cHV0UHJvcGVydHkoT3V0cHV0S2V5cy5PTUlUX1hNTF9ERUNMQVJBVElPTiwgIm5vIik7CgkJCXRyYW5zZm9ybWVyLnNldE91dHB1dFByb3BlcnR5KE91dHB1dEtleXMuTUVUSE9ELCAieG1sIik7CgkJCXRyYW5zZm9ybWVyLnNldE91dHB1dFByb3BlcnR5KE91dHB1dEtleXMuSU5ERU5ULCAieWVzIik7CgkJCXRyYW5zZm9ybWVyLnNldE91dHB1dFByb3BlcnR5KE91dHB1dEtleXMuRU5DT0RJTkcsICJVVEYtOCIpOwoJCQl0cmFuc2Zvcm1lci5zZXRPdXRwdXRQcm9wZXJ0eSgie2h0dHA6Ly94Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5lLm9yZy94c2x0fWluZGVudC1hbW91bnQiLCAiMiIpOwoJCQl0cmFuc2Zvcm1lci50cmFuc2Zvcm0obmV3IERPTVNvdXJjZShkb2MpLCBuZXcgU3RyZWFtUmVzdWx0KFN5c3RlbS5vdXQpKTsKCQl9IGNhdGNoIChFeGNlcHRpb24gZSkge30KCX0KfQo=