2012-03-21 4 views
7

Java 클래스를 XStream을 사용하여 XML로 직렬화하려고했습니다.XStream 이중 밑줄 처리 (Java)

하나의 밑줄 (canal_operateur)이있는 XML 요소를 생성해야했지만 XStream은 XML 요소 이름에 두 번째 밑줄을 추가합니다.

어떻게 하나의 밑줄을 유지하나요? 이 클래스의 기본 구성으로

는 :

<document> 
    <canal__operateur>canal</canal__operateur> 
    <commentaire>commentaire</commentaire> 
    <metadonnees/> 
</document> 

답변

7

따르면 here에 :

XStream을지도 Java 클래스 이름과 필드 이름

public class Document implements Serializable { 
    private String typedoc; 
    private Fichier fichier; 
    private String canalOperateur; 
    //xstream.aliasField("canal_operateur", Document.class, "canalOperateur"); 
    /* 
    ** setter and getter 
    */ 
} 

XStream과는 밑줄을 두 배로 XML 태그 또는 속성 Java의 식별자에 사용 된 문자 중 일부는 문자가 XML 이름에 유효하지 않기 때문에 불행하게도이 매핑은 1 : 1 일 수 없습니다. 따라서 XStream은 XmlFriendlyNameCoder를 사용하여이 문자를 대체합니다. 기본적으로이 NameCoder는 밑줄을 이스케이프 문자로 사용하므로 밑줄 자체도 이스케이프 처리해야합니다. XmlFriendlyNameCoder의 다른 인스턴스 또는 NoNameCoder와 같은 완전히 다른 구현을 제공하여 이름 코딩을 전혀 방지 할 수 있습니다. 그러나 그 결과로 나타나는 이름이 XML에 유효하다는 것을 확인하는 것은 귀하의 책임입니다.

+0

많이 있습니다! NoNameCoder 복용량 작업! – codeisee