2012-03-21 21 views
7

XStreamを使用してJavaクラスをXMLにシリアル化する必要がありました。XStreamの二重下線処理(Java)

1つのアンダーライン(canal_operateur)を持つXML要素を生成する必要がありましたが、XStreamはXML要素名に2番目の下線を追加します。

どのように下線を1つだけ保持するのですか?このクラスのデフォルトの設定で

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> 

答えて

7

hereによると:

XStreamのマップJavaクラス名とフィールド名をXMLタグまたは 属性に変換します。残念なことに、このマッピングは1:1にはできません。Javaの識別子に使用される 文字の一部がXML名で無効であるためです。 したがって、XStreamはXmlFriendlyNameCoderを使用して、これらの 文字を置き換えます。デフォルトでは、このNameCoderは アンダースコアをエスケープ文字として使用するため、 アンダースコア自体もエスケープする必要があります。 XmlFriendlyNameCoderの異なる インスタンスまたはNoNameCoderのような全く異なる 実装を提供して、名前のコーディングをまったく行わないようにすることができます。 結果として得られる の名前がXMLに対して有効であることを確認することは、あなたの責任です。

+0

NoNameCoderの作業量! – codeisee