关于JAXB1.0的一些小研究

本文探讨了使用JAXB1.0解析复杂XSD文件时遇到的问题,特别是内部类命名过长导致的限制,并分享了一种手动修改名称的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在一个项目用到了JAXB1.0,用来解析复杂的XSD文件,
其中我们采用过N多方案处理XSD,包括XMLBeans,当然JDOM,DOM,SAX也都考虑使用,不过,由于后面几种会手写巨多的代码,当然没有被受我这个比较偷懒的人青睐了哟,呵。另外JDK我们用的1.4,迫使我用JAXB1.0,要是用JAXB2.0以上,我们处理XSD就更加如鱼得水了。
[color=blue]不过在项目中采用JAXB1.0,遇到了很多问题,其中:
jaxb1.0解析xsd时,是将xsd的层级结构处理成内部类的形式,
这样,就出现了一个问题,如果xsd层级结构深,复杂的话,内部类的名字会非常的冗长
因为内部类的命名是按层次累加过来的
经过测试,得到一下数据:
windows文件系统, 路径+文件名的长度不能大于255(最大为254)
java虚拟机对class名字的限制是,class名不能超过248(248+".class" = 254)
如果文件名过长,会导致class不能加载的错误 不过我们最后的解决方案:是手工改的名。不知道网友们有没有更好的办法,让我采纳下,十分感谢众多网友共现探讨研究。 [/color]
附:xjc命令行接口的一些选项列如下:
-nv 对于输入的模式不执行严格的XML验证
-b <file> 指定外部的绑定文件
-d <dir> 指定生成的文件的存放路径
-p <pkg> 指定目标包
-classpath <arg> 指定classpath
-use-runtime <pkg> impl.runtime包不被生成
-xmlschema 输入的模式是一个W3C XML模式(默认)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值