【发布时间】:2021-10-23 12:48:40
【问题描述】:
如果字符串大小超过 XSD 中定义的最大大小,我需要截断 XML 中字符串的大小。在 JAXB 中有没有一种方法可以直接截断编组时的字符串,而不是手动验证对象中的每个属性并截断数据。
【问题讨论】:
如果字符串大小超过 XSD 中定义的最大大小,我需要截断 XML 中字符串的大小。在 JAXB 中有没有一种方法可以直接截断编组时的字符串,而不是手动验证对象中的每个属性并截断数据。
【问题讨论】:
你可以使用@XmlJavaTypeAdapter
https://docs.oracle.com/javase/7/docs/api/javax/xml/bind/annotation/adapters/XmlJavaTypeAdapter.html
类似这样的:
public class TruncatorAdapter extends XmlAdapter<String, String> {
Integer maxLen=...;
/*Java => XML*/
public String marshal(String val) throws Exception {
return val.substring(0,maxLen);
}
/*XML => Java*/
public String unmarshal(String val) throws Exception {
return val;
}
}
【讨论】: