XStream双下划线处理(Java)

cod*_*see 7 java xstream underline

我想用XStream将java类序列化为XML.

我需要使用一个下划线(canal_operateur)生成一个XML元素,但XStream在xml元素名称中添加了第二个下划线.

那么如何只保留一个下划线?

使用此类的默认配置:

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

XStream将下划线加倍:

<document>
    <canal__operateur>canal</canal__operateur>
    <commentaire>commentaire</commentaire>
    <metadonnees/>
</document>
Run Code Online (Sandbox Code Playgroud)

npi*_*nti 7

根据这里:

XStream将Java类名和字段名映射到XML标记或属性.不幸的是,这种映射不能是1:1,因为Java中用于标识符的某些字符在XML名称中是无效的.因此,XStream使用XmlFriendlyNameCoder用替换替换这些字符.默认情况下,此NameCoder使用下划线作为转义字符,因此也可以转义下划线.您可以提供XmlFriendlyNameCoder的不同配置实例或完全不同的实现,如NoNameCoder,以防止名称编码.但是,您有责任确保生成的名称对XML有效.