【问题标题】:Truncate string to max limit during JaxB marshalling在 JaxB 编组期间将字符串截断到最大限制
【发布时间】:2021-10-23 12:48:40
【问题描述】:

如果字符串大小超过 XSD 中定义的最大大小,我需要截断 XML 中字符串的大小。在 JAXB 中有没有一种方法可以直接截断编组时的字符串,而不是手动验证对象中的每个属性并截断数据。

【问题讨论】:

    标签: java xml xsd 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); } } 抄送...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-04
    • 2015-10-21
    • 2017-06-13
    • 2012-01-12
    • 1970-01-01
    相关资源
    最近更新 更多