2012-03-21 26 views
7

Quería serializar una clase java a XML con XStream.XStream manejo doble subrayado (Java)

Necesitaba generar un elemento XML con un subrayado (canal_operateur), pero XStream agrega un segundo subrayado en el nombre del elemento xml.

Entonces, ¿cómo mantener un solo subrayado?

Con la configuración por defecto para esta clase:

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 duplica el subrayado:

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

Respuesta

7

Según here:

nombres de las clases mapas xstream de Java y los nombres de los campos a etiquetas XML o atributos . Lamentablemente, esta asignación no puede ser 1: 1, ya que algunos caracteres utilizados para los identificadores en Java no son válidos en los nombres XML. Por lo tanto, XStream utiliza un XmlFriendlyNameCoder para reemplazar estos caracteres con un reemplazo. De forma predeterminada, este NameCoder usa un guión bajo como carácter de escape y, por lo tanto, tiene que escapar también del subrayado . Puede proporcionar una instancia configurada diferente de XmlFriendlyNameCoder o una implementación completamente diferente como NoNameCoder para evitar la codificación del nombre. Sin embargo, es su responsabilidad asegurarse de que los nombres resultantes sean válidos para XML.

+0

thans mucho! NoNameCoder dosis de trabajo! – codeisee