11

文字列から先頭と末尾の空白を削除するようにJAXBアンマーシャラーを構成するにはどうすればよいですか?

たとえば、JAXBアノテーションを使用したJavaBeanとXML間の単純なバインディングについて考えてみましょう。

@XmlRootElement(name="bean")
class Bean {

  @XmlElement(required=true)
  String name;

  @XmlElement(required=true)
  int number;
}

以下のXMLをアンマーシャリングできるようにしたいので、bean.nameには先頭と末尾の空白が含まれていません。これは「私の名前」であり、「\n私の名前\n 」ではありません 。

<bean>
  <name>
    My name
  </name>
  <number>1</number>
</bean>
4

2 に答える 2

8

カスタムAdapterクラスを使用します。私はNormalizedStringAdapterが仕事をするだろうと思っていましたが、それはアンマーシャリングのためだけであり、とにかくあなたが望むことをしません。

public class MyNormalizedStringAdapter extends XmlAdapter<String, String> {

    @Override
    public String marshal(String text) {
        return text.trim();
    }

    @Override
    public String unmarshal(String v) throws Exception {
        return v.trim();
    }
}

次に、次のようにアダプターでフィールドを装飾します。

@XmlElement(required=true)
@XmlJavaTypeAdapter(MyNormalizedStringAdapter.class)
String name;
于 2008-12-11T13:39:21.030 に答える