Java開発キットには、XMLコンテンツを操作するjavax.xml.transformパッケージが含まれています。 トランスフォーマオブジェクトは、XMLを含むストリームを入力します。 トランスフォーマは、トランスフォームメソッドを使用してトランスフォームを適用します。
この例では、インデントされていないxmlを保持する入力Stringを作成します。 次に、TransformerFactoryを使用してTransformerを作成します。 トランスフォーマーはxmlをインデントするように構成されています。 インデントのサイズは2です。変換メソッドが呼び出され、プロセスの出力はSystem.outに書き込まれます。 xmlが無効であるようなエラーが発生した場合は、エラーメッセージも出力に表示されます。
import java.io.StringReader;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
public class XmlFormatter {
public static void main(String[] argv) {
final String input = "<a><b>test</b><c>test2</c></a>";
java.io.StringWriter xmlResultResource = new java.io.StringWriter();
Transformer xmlTransformer = null;
try {
xmlTransformer = TransformerFactory.newInstance().newTransformer();
xmlTransformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
xmlTransformer.setOutputProperty(OutputKeys.INDENT, "yes");
} catch (TransformerConfigurationException e) {
System.out.println( "Transformer configuration error: " + e.getMessage() );
return;
}
try {
xmlTransformer.transform(new StreamSource(new StringReader(input)),
new StreamResult(xmlResultResource));
} catch (TransformerException e) {
System.out.println("Error transform: " + e.getMessage());
return;
}
final String output = xmlResultResource.getBuffer().toString();
System.out.println( "input:" );
System.out.println( input );
System.out.println( "output:" );
System.out.println( output );
}
}
input: <a><b>test</b><c>test2</c></a> output: <?xml version="1.0" encoding="UTF-8"?><a> <b>test</b> <c>test2</c> </a>