XStream 은 CDATA 탭 을 지원 합 니 다.
2563 단어 xstream
연구: 인터넷 에서 관련 자 료 를 찾 았 습 니 다. 기본적으로 사용 하 는 방법 은 XppDriver 를 다시 불 러 오고 MyXppDriver 류 를 만들어 서 XppDriver 를 확장 하 는 것 입 니 다. MyXppDriver 의 역할 은 생 성 할 xml 파일 의 text 를 문자 로 바 꾸 는 것 입 니 다. 마지막 으로 XStream xstream = new XStream (new MyXppDriver) 을 사용 하여 XStream 대상 을 만 들 고 CDATA 라벨 을 지원 합 니 다.
생각: 우선 본인 은 이렇게 쓰 는 것 이 비교적 번거롭다 고 생각 합 니 다. 지금 은 출력 할 text 에 '! [CDATA ["시작 과"]]' 가 끝 난 필드 가 있 으 면 특별한 기호의 전 의 를 하지 않 아 도 됩 니 다. 특정한 필드 에 CDATA 가 서명 한 시작 기호 가 없 을 때 기 존의 Pretty PrintWriter 의 writerText 방법 으로 출력 합 니 다.텍스트 의 특수 기 호 를 바 꿀 것 입 니 다. 예 를 들 어 따옴표 (") 는 '& quot' 로 바 뀌 어 출력 된 xml 파일 이 읽 을 때 오류 가 발생 하지 않도록 합 니 다.
자바 코드
1.protected static String PREFIX_CDATA = "<![CDATA[";
2.protected static String SUFFIX_CDATA = "]]>";
3.
4. /**
5. * XStream
6. * CDATA
7. *
8. * String text "<![CDATA[" "]]>" ,
9. * XStream
10. * @param isAddCDATA CDATA
11. * @return
12. */
13. public static XStream initXStream(boolean isAddCDATA){
14. XStream xstream = null;
15. if(isAddCDATA){
16. xstream = new XStream(
17. new XppDriver() {
18. public HierarchicalStreamWriter createWriter(Writer out) {
19. return new PrettyPrintWriter(out) {
20. protected void writeText(QuickWriter writer, String text) {
21. if(text.startsWith(PREFIX_CDATA)
22. && text.endsWith(SUFFIX_CDATA)) {
23. writer.write(text);
24. }else{
25. super.writeText(writer, text);
26. }
27. }
28. };
29. };
30. }
31. );
32. }else{
33. xstream = new XStream();
34. }
35. return xstream;
36. }
[전재 주소]http://blog.csdn.net/ben1247/article/details/6252651