Java 개발 킷에는 XML 컨텐트를 조작하기위한 javax.xml.transform 패키지가 들어 있습니다. 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>