奈斯漫画.apk(点击下载) / DefaultXmlFormatter.java


package com.elvishew.xlog.formatter.message.xml;

import com.elvishew.xlog.formatter.FormatException;
import com.elvishew.xlog.internal.SystemCompat;
import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.apache.commons.lang3.BooleanUtils;

public class DefaultXmlFormatter implements XmlFormatter {
    private static final int XML_INDENT = 4;

    public String format(String str) {
        if (str == null || str.trim().length() == 0) {
            throw new FormatException("XML empty.");
        }
        try {
            StreamSource streamSource = new StreamSource(new StringReader(str));
            StreamResult streamResult = new StreamResult(new StringWriter());
            Transformer newTransformer = TransformerFactory.newInstance().newTransformer();
            newTransformer.setOutputProperty("indent", BooleanUtils.YES);
            newTransformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", String.valueOf(4));
            newTransformer.transform(streamSource, streamResult);
            String obj = streamResult.getWriter().toString();
            return obj.replaceFirst(">", ">" + SystemCompat.lineSeparator);
        } catch (Exception e) {
            throw new FormatException("Parse XML error. XML string:" + str, e);
        }
    }
}