地が傾いて舞が舞われぬ

suchi today hatenablog

JavaでXMLファイルをpretty-print

http://d.hatena.ne.jp/toolkit/20060719/p1 のコメント欄について試してみました。
Xercesが必要でした(FEATURE_NOT_SUPPORTEDと言われてしまう)。
いまいち自信がありません。

import java.io.FileOutputStream;
import javax.xml.parsers.*;
import org.w3c.dom.Document;
import org.w3c.dom.ls.*;

public class XmlPP {
    public static void main(String[] args) throws Exception {
        if (args.length < 2) {
            System.err.println("XmlPP infile outfile");
            return;
        }
        DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
        Document doc = db.parse(args[0]);
        DOMImplementationLS domImplLS = (DOMImplementationLS)doc.getImplementation().getFeature("LS", "3.0");
        LSOutput lso = domImplLS.createLSOutput();
        LSSerializer serializer = domImplLS.createLSSerializer();
        serializer.getDomConfig().setParameter("format-pretty-print", true);
        FileOutputStream fos = new FileOutputStream(args[1]);
        lso.setByteStream(fos);
        serializer.write(doc, lso);
        fos.close();
    }
}