7

XStreamを使用してJavaクラスをXMLにシリアル化したかったのです。

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は下線を2倍にします:

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

1 に答える 1

7

ここによると:

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

于 2012-03-21T07:54:24.217 に答える