xml的Schema校验问题,技术探讨,没做过的请不要进来!
我们的项目中采用javax的xml Validator来做基于schema的xml校验,校验通过会返回true,校验不通过会将错误信息封装在一个VO集合中,该集合中的每一个VO会包含出错的xml行号,列号以及错误信息,校验的ValidateErrorHandler通过继承javax的ErrorHandler来实现。
现在有个问题,如果校验出错,定位到的xml源文件的行号和列号是用户不关心的,他们关心的是在哪个xml节点,节点的那个属性出错,这样他们可以通过前台的xml树编辑页面直接修改。
看了一下javax的ContentHandler,他能够做到在校验每一个Elment时获取该Elment的属性、命名空间等,但是如何能在ContentHanler中捕捉到校验错误时的节点信息,现在没有想到好的办法,主要是需要ErrorHandler和ContentHandler的联动
大家有没有好的方法?我现在想到的方法是在我们自己封装的ErrorHandler中把ContentHandler作成成员变量,然后在出错时获取ContentHandler的Elment的数据,但是ContentHandler的校验Element如何保存,放到一个静态类中么?
大家踊跃讨论一下吧,我觉得最近CSDN越来越冷清了,还是多交流,多讨论的好啊!