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