7

我想用 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>
4

1 回答 1

7

根据这里

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

于 2012-03-21T07:54:24.217 回答