JAXB - Annotations, Type Mapping: XmlSchemaType
The annotation XmlSchemaType
defines a mapping between an arbitrary Java type and a simple schema built-in type. Most of the time the default mapping is satisfactory, but every now and then an alternative may be more convenient. Let's assume that the processing of chunks of text requires their extension, either after unmarshalling or before the emitting marshalling. For this, a StringBuffer
is better than String
, which is the default mapping for xs:string
. Below are the essential Java classes, one defining TextType
as a container for a string, and the type adapter class for the simple conversion between String
and StringBuffer
. Notice that the latter class is specified in a separate annotation, i.e.,XmlJavaTypeAdapter
.
public class TextType { @XmlElement @XmlSchemaType(name="string") @XmlJavaTypeAdapter( String2StrBuf.class ) public StringBuffer strbuf; } public class String2StrBuf extends XmlAdapter<String,StringBuffer> { @Override public String marshal( StringBuffer strbuf ){ return strbuf.toString(); } @Override public StringBuffer unmarshal( String string ){ return new StringBuffer( string ); } }
Within the Java code that unmarshals or marshals an instance document, TextType
elements are now StringBuffers
, e.g.:
TextType text = new TextType(); text.strbuf = new StringBuffer( "This is the house" ); // ... text.strbuf.append( " that Jack built." );
Such a type mapping can be defined either for an individual element or for all occurrences within a package. If you need multiple mappings at package level, you'll have to bundle theXmlSchemaType
annotations in an XmlSchemaTypes
(note the plural) annotation, and the XmlJavaTypeAdapter
annotiations are packed into a single XmlJavaTypeAdapters
annotation.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· 手把手教你更优雅的享受 DeepSeek
· 腾讯元宝接入 DeepSeek R1 模型,支持深度思考 + 联网搜索,好用不卡机!
· AI工具推荐:领先的开源 AI 代码助手——Continue
· 探秘Transformer系列之(2)---总体架构
· V-Control:一个基于 .NET MAUI 的开箱即用的UI组件库