単純なXMLファイル(DTDで定義されている)を読み書きする既存のコードの一部は廃止予定のクラスを使用していることに注目してください。以下を非推奨クラスと置き換えたいJava 6を使用しているので、サードパーティのツールではなくXML処理に含まれるパッケージを使用したいと考えています(jdomのような標準的なものも可能です)。出力XMLに線幅とファイルタイプを設定する
OutputFormat format = new OutputFormat(doc);
format.setLineWidth(100);
format.setIndenting(true);
format.setIndent(2);
これは、さまざまなSOの回答で言及されているTransformerFactoryを使用している試みです。上記のインデントを指定することは、あまりにも難しくはありませんが、期待通りにはわかりません。しかし、行の長さを指定する方法は?
TransformerFactory transformerFactory = TransformerFactory.newInstance();
transformerFactory.setAttribute("indent-number", Integer.valueOf(4));
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(writer);
transformer.transform(source, result);
ファイルがDOS形式で作成されているのに対して、上記はUNIX形式ですが、注意してください。これよりも良いアプローチがありますか?これは非常に単純なファイルであり、多くの書式を必要とせず、単にプログラムに加えて人が読むことができるようにしたい。
インデント数が偶数働いている場合さて、今私はよく分かりません。私は上記と同様にtransformer.setOutputPropertyを試して、矛盾した結果を得ています。 (また、私が往復を読んだり書いたりすると、出力ファイルの一部に空白が増えています。上のコードでcom.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImplがインスタンス化されているようです。 –