在 JaxB 编组期间将字符串截断到最大限制
Posted
技术标签:
【中文标题】在 JaxB 编组期间将字符串截断到最大限制【英文标题】:Truncate string to max limit during JaxB marshalling 【发布时间】:2021-10-23 12:48:40 【问题描述】:如果字符串大小超过 XSD 中定义的最大大小,我需要截断 XML 中字符串的大小。在 JAXB 中有没有一种方法可以直接截断编组时的字符串,而不是手动验证对象中的每个属性并截断数据。
【问题讨论】:
【参考方案1】:你可以使用@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;
【讨论】:
谢谢。但在这种情况下,最大长度是固定的,不是动态的吗?我不能在具有不同最大长度值的多个字符串中使用它? 一个简单的解决方案是实现不同长度的不同类。公共类 TruncatorAdapter10 扩展 TruncatorAdapter public TruncatorAdapter10 () super(10); 抄送...以上是关于在 JaxB 编组期间将字符串截断到最大限制的主要内容,如果未能解决你的问题,请参考以下文章