XStream双下划线处理(Java)

时间:2012-03-21 07:48:02

标签: 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
    */
}

XStream将下划线加倍:

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

1 个答案:

答案 0 :(得分:7)

根据here

  

XStream将Java类名和字段名映射到XML标记或   属性。不幸的是,这种映射不能是1:1,因为有些   用于Java中标识符的字符在XML名称中无效。   因此,XStream使用XmlFriendlyNameCoder来替换它们   有替换的人物。默认情况下,此NameCoder使用   强调作为逃避角色,因此逃避了   也强调了自己。您可以提供不同的配置   XmlFriendlyNameCoder的实例或完全不同的   像NoNameCoder这样的实现根本不会阻止名称编码。   但是,您有责任确保由此产生的结果   名称对XML有效。