问题描述
我想配置 JAXB 以便它修剪所有字符串字段上的空格
I would like to configure JAXB so that it trims whitespaces on all string fields
我看到了以下答案:如何配置 JAXB 以便在解组标记值时修剪空格?
但我不想按照建议的答案注释所有字符串字段
But I do not want to have to annotate all string fields as per the suggested answer
@XmlElement(required=true) @XmlJavaTypeAdapter(MyNormalizedStringAdapter.class) String name;
谢谢!
推荐答案
创建一个 XmlAdapter.
package com.foo.bar; public class StringTrimAdapter extends XmlAdapter<String, String> { @Override public String unmarshal(String v) throws Exception { if (v == null) return null; return v.trim(); } @Override public String marshal(String v) throws Exception { if (v == null) return null; return v.trim(); } }
在com.foo.bar中创建一个package-info.java文件.
将以下内容添加到 package-info.java 文件中
Add the following to the package-info.java file
@XmlJavaTypeAdapter(value=StringTrimAdapter.class,type=String.class) package com.foo.bar; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
编辑
请注意,如果包级别的注解对您来说过于广泛,您总是可以将 @XmlJavaTypeAdapter 注解应用于类.