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 |