如何配置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;