如何配置 JAXB 以便缺省情况下修剪空格
我想配置JAXB,以便它修剪所有字符串字段上的空格
我看到了以下答案:如何配置JAXB,以便在取消编组标签值时修剪空格?
但我不想按照建议的答案注释所有字符串字段
@XmlElement(required=true)
@XmlJavaTypeAdapter(MyNormalizedStringAdapter.class)
String name;
谢谢!
我想配置JAXB,以便它修剪所有字符串字段上的空格
我看到了以下答案:如何配置JAXB,以便在取消编组标签值时修剪空格?
但我不想按照建议的答案注释所有字符串字段
@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();
}
}
在 中创建文件。package-info.java
com.foo.bar
将以下内容添加到文件中package-info.java
@XmlJavaTypeAdapter(value=StringTrimAdapter.class,type=String.class)
package com.foo.bar;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
StringTrimAdapter
String
com.foo.bar
编辑
请注意,如果包级别批注对您来说过于宽泛,则始终可以将批注应用于类。@XmlJavaTypeAdapter
值得一提的是,除了编写执行修整的 XmlAdapter
之外,还可以将 XJC 配置为在生成的代码中实际使用此适配器。如何做到这一点的示例:
<jaxb:globalBindings>
<xjc:javaType
name="java.lang.String"
xmlType="xs:string"
adapter="com.foo.bar.StringTrimAdapter"/>
</jaxb:globalBindings>
上面的例子使用了Sahil答案中给出的XmlAdapter
。