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>