如何配置JAXB,以便默认情况下修剪空格
我想配置JAXB,以便它修剪所有字符串字段上的空格
我看到以下答案: 如何配置JAXB,以便在解组标记值时修剪空格?
但我不想根据建议的答案注释所有字符串字段
@XmlElement(required=true) @XmlJavaTypeAdapter(MyNormalizedStringAdapter.class) String name;
谢谢!
-
创建一个XmlAdapter 。
package com.foo.bar; public class StringTrimAdapter extends XmlAdapter
{ @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
文件中@XmlJavaTypeAdapter(value=StringTrimAdapter.class,type=String.class) package com.foo.bar; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
- 这将把
StringTrimAdapter
应用于com.foo.bar
所有String
字段,com.foo.bar
需要任何额外的注释。
编辑
请注意,如果包级别注释过于庞大,您可以始终将@XmlJavaTypeAdapter
注释应用于类。
值得一提的是,除了编写执行修剪的XmlAdapter
之外,您还可以将XJC配置为在生成的代码中实际使用此适配器。 如何做到的一个例子:
上面的例子使用Sahil的答案中给出的XmlAdapter
为了完成配置XJC的示例(in the answer provided by Lukas Eder)
,我想添加以下示例配置,我们需要在maven的pom.xml中添加
. . responseSchema xjc generate-sources false ${project.basedir}/src/main/java com.foo.bar.domain.response ../resources/bindings.xjb ${project.basedir}/src/main/resources/wsdl/xsd response.xsd true . .
我们需要在bindings.xjb
添加以下内容。