2010. 11. 4. 17:37 java

xml transformer indent 문제

[출저] http://blog.anyframejava.org/?p=461

java1.5버전에서는 Transformer를 이용하여 xml 출력시 indent가 제대로 적용이 되지 않는 버그가 있다.

일반적으로 Transformer를 이용하여 document object를 xml문서로 출력하는 방법은 아래와 같다.
Transformer tf = TransformerFactory.newInstance().newTransformer();
tf.setOutputProperty(OutputKeys.INDENT, "yes");
tf.setOutputProperty("{http://xml. customer .org/xslt}indent-amount", "4");
tf.transform(new DOMSource(doc), new StreamResult(System.out));

하지만 java1.5에서는 버그(http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5064280
)로 인해 indent가 제대로 적용되지 않는다. sun에서는 아래와 같은 방법으로 우회하는 법을 가이드하고 있다.

  • TransformerFactory의 indent-number attribute를 설정해 줄 것
  • Transformer의 OutputKeys.INDENT property를 yes로 설정해 줄 것
  • OutputStream을 Writer로 감쌀 것

수정된 코드는 아래와 같다.
TransformerFactory tf = TransformerFactory.newInstance();
tf.setAttribute("indent-number", new Integer(2));
Transformer t = tf.newTransformer();
t.setOutputProperty(OutputKeys.INDENT, "yes");
t.transform(new DOMSource(doc), new StreamResult(new OutputStreamWriter(out, "utf-8"));

'java' 카테고리의 다른 글

XSS 관련  (0) 2011.05.31
멀티코어 시스템의 Java 동시성 버그 패턴  (0) 2011.04.21
jsp:include page="포함할페이지" flush="true | false"  (0) 2010.11.03
책 참고  (0) 2010.08.09
자바 관련 좋은 사이트 및 서적  (0) 2010.04.15
Posted by gt1000

블로그 이미지
gt1000

태그목록

공지사항

어제
오늘

달력

 « |  » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함