如何配置JAXB以便在解组标记值时修剪空格?

如何配置JAXB unmarshaller,以便它从字符串中修剪前导和尾随空格?

例如,让我们考虑使用JAXB注释在Java bean和XML之间进行简单的绑定:

@XmlRootElement(name="bean") class Bean { @XmlElement(required=true) String name; @XmlElement(required=true) int number; } 

我希望能够解析下面给出的XML,因此bean.name不包括起始和尾随空格 – 是“ 我的名字 ”,而不是“ \ n我的名字\ n ”。

   My name  1  

使用自定义适配器类。 我当时认为NormalizedStringAdapter会完成这项工作,但它只适用于解组而且它无论如何都不会做你想要的。

 public class MyNormalizedStringAdapter extends XmlAdapter { @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;