如何配置JAXB unmarshaller以便它将从字符串中修剪前导和尾随空格?
例如,让我们考虑使用JAXB注释在Java bean和XML之间进行简单的绑定:
@XmlRootElement(name="bean")
class Bean {
@XmlElement(required=true)
String name;
@XmlElement(required=true)
int number;
}
Run Code Online (Sandbox Code Playgroud)
我希望能够解析下面给出的XML,因此bean.name不包括起始和尾随空格 - 是" 我的名字 ",而不是" \n我的名字\n ".
<bean>
<name>
My name
</name>
<number>1</number>
</bean>
Run Code Online (Sandbox Code Playgroud)
使用自定义适配器类.我当时认为NormalizedStringAdapter会完成这项工作,但它只是用于解组而且它无论如何都不能做你想要的.
public class MyNormalizedStringAdapter extends XmlAdapter<String, String> {
@Override
public String marshal(String text) {
return text.trim();
}
@Override
public String unmarshal(String v) throws Exception {
return v.trim();
}
}
Run Code Online (Sandbox Code Playgroud)
然后使用适配器装饰字段,如下所示:
@XmlElement(required=true)
@XmlJavaTypeAdapter(MyNormalizedStringAdapter.class)
String name;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8650 次 |
| 最近记录: |