XStream 은 CDATA 탭 을 지원 합 니 다.

2563 단어 xstream
수요: XML 문 서 를 생 성 할 때 CDATA 라벨 을 지원 해 야 합 니 다. 필드 가 모두 증가 해 야 하 는 것 이 아니 라 특정한 필드 에 CDATA 라벨 을 추가 해 야 합 니 다.
연구: 인터넷 에서 관련 자 료 를 찾 았 습 니 다. 기본적으로 사용 하 는 방법 은 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

좋은 웹페이지 즐겨찾기