精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-08-23
但如何使用Digester来验证XML中每个字段的正确性呢?比如空值,类型不对等. 想到使用dtd.但是不知道在Digester如何使用.原先的那个XML是按自己的模板输出出来的并不包含dtd信息. Digester中有一个setSchema()方法.用他可以验证吗?怎么用呢? 请人指教谢谢. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-08-23
digester只负责将xml转换成为object
然后校验object的属性是否正确不就OK了么? |
|
返回顶楼 | |
发表时间:2006-08-23
Readonly 写道 digester只负责将xml转换成为object
然后校验object的属性是否正确不就OK了么? 不行啊.这样不就是把验证交给后台做了嘛.这样做我认为会影响效率.解析一个XML文件如果内容较少,这样用后台验证是可行的(但其实还是觉得不妥).但是如果内容较多.后台验证的效率就将是一个问题,因此我想在他解析的时候能够自己进行判断.这样解析就完整了,而不需要后台验证. |
|
返回顶楼 | |
发表时间:2006-08-23
zlkn2005 写道 Readonly 写道 digester只负责将xml转换成为object
然后校验object的属性是否正确不就OK了么? 不行啊.这样不就是把验证交给后台做了嘛.这样做我认为会影响效率.解析一个XML文件如果内容较少,这样用后台验证是可行的(但其实还是觉得不妥).但是如果内容较多.后台验证的效率就将是一个问题,因此我想在他解析的时候能够自己进行判断.这样解析就完整了,而不需要后台验证. 你测过了? |
|
返回顶楼 | |
发表时间:2006-08-23
badqiu 写道 zlkn2005 写道 Readonly 写道 digester只负责将xml转换成为object
然后校验object的属性是否正确不就OK了么? 不行啊.这样不就是把验证交给后台做了嘛.这样做我认为会影响效率.解析一个XML文件如果内容较少,这样用后台验证是可行的(但其实还是觉得不妥).但是如果内容较多.后台验证的效率就将是一个问题,因此我想在他解析的时候能够自己进行判断.这样解析就完整了,而不需要后台验证. 你测过了? 测试数据并为准备。 但是,已我个人的理解,如果用后台验证,将是一种破坏设计思路的方法。我觉得这样做不妥当。 求,如何在Digester中验证。谢谢! |
|
返回顶楼 | |
发表时间:2006-08-23
zlkn2005 写道 badqiu 写道 zlkn2005 写道 Readonly 写道 digester只负责将xml转换成为object
然后校验object的属性是否正确不就OK了么? 不行啊.这样不就是把验证交给后台做了嘛.这样做我认为会影响效率.解析一个XML文件如果内容较少,这样用后台验证是可行的(但其实还是觉得不妥).但是如果内容较多.后台验证的效率就将是一个问题,因此我想在他解析的时候能够自己进行判断.这样解析就完整了,而不需要后台验证. 你测过了? 测试数据并为准备。 但是,已我个人的理解,如果用后台验证,将是一种破坏设计思路的方法。我觉得这样做不妥当。 求,如何在Digester中验证。谢谢! 写个DTD,再digester.setValidating(true); |
|
返回顶楼 | |
发表时间:2006-08-23
badqiu 写道 zlkn2005 写道 badqiu 写道 zlkn2005 写道 Readonly 写道 digester只负责将xml转换成为object
然后校验object的属性是否正确不就OK了么? 不行啊.这样不就是把验证交给后台做了嘛.这样做我认为会影响效率.解析一个XML文件如果内容较少,这样用后台验证是可行的(但其实还是觉得不妥).但是如果内容较多.后台验证的效率就将是一个问题,因此我想在他解析的时候能够自己进行判断.这样解析就完整了,而不需要后台验证. 你测过了? 测试数据并为准备。 但是,已我个人的理解,如果用后台验证,将是一种破坏设计思路的方法。我觉得这样做不妥当。 求,如何在Digester中验证。谢谢! 写个DTD,再digester.setValidating(true); 其实我个人认为似乎你说的还不明确,应该这样吧 看API是这样写的。 URL url = new URL("/org/apache/struts/resources/struts-config_1_0.dtd"); digester.register ("-//Apache Software Foundation//DTD Struts Configuration 1.0//EN", url.toString()); 因为本人的XML中并为包含DTD。而DTD又是挂在网上的。所以我又改造了下 File dtdFile = new File("/test.dtd"); URL url = dtdFile.toURL(); digester.register ("-//Apache Software Foundation//DTD Struts Configuration 1.0//EN", url.toString()); 类似这样。 至于digester.setValidating(true);还没有试. |
|
返回顶楼 | |
发表时间:2006-08-23
zlkn2005 写道 Readonly 写道 digester只负责将xml转换成为object
然后校验object的属性是否正确不就OK了么? 不行啊.这样不就是把验证交给后台做了嘛.这样做我认为会影响效率.解析一个XML文件如果内容较少,这样用后台验证是可行的(但其实还是觉得不妥).但是如果内容较多.后台验证的效率就将是一个问题,因此我想在他解析的时候能够自己进行判断.这样解析就完整了,而不需要后台验证. 你用dtd只能校验数据是否必需吧,难道dtd能够校验数据格式,复杂逻辑? 比如要求时间格式必须是yyyy-MM-dd,dtd如何校验? 比如要求某个数字必须是在0和100之间,dtd又如何校验? 再比如要求2个时间要有先后顺序: <production-date>2005-07-25</production-date> <expiry-date>2006-07-25</expiry-date> 这些还不是得针对一个object进行校验,弄dtd搞不定的啊 谈到效率,你没有实际测试怎么知道dtd的效率高?实际上dtd检验是效率最最差的一种方法了。 |
|
返回顶楼 | |
发表时间:2006-08-23
Readonly 写道 zlkn2005 写道 Readonly 写道 digester只负责将xml转换成为object
然后校验object的属性是否正确不就OK了么? 不行啊.这样不就是把验证交给后台做了嘛.这样做我认为会影响效率.解析一个XML文件如果内容较少,这样用后台验证是可行的(但其实还是觉得不妥).但是如果内容较多.后台验证的效率就将是一个问题,因此我想在他解析的时候能够自己进行判断.这样解析就完整了,而不需要后台验证. 你用dtd只能校验数据是否必需吧,难道dtd能够校验数据格式,复杂逻辑? 比如要求时间格式必须是yyyy-MM-dd,dtd如何校验? 比如要求某个数字必须是在0和100之间,dtd又如何校验? 再比如要求2个时间要有先后顺序: <production-date>2005-07-25</production-date> <expiry-date>2006-07-25</expiry-date> 这些还不是得针对一个object进行校验,弄dtd搞不定的啊 谈到效率,你没有实际测试怎么知道dtd的效率高?实际上dtd检验是效率最最差的一种方法了。 关于你的疑问,不错,我现在就是想校验他的必需性。 关于效率马上就能知道了,已经准备10000条数据做测试。 |
|
返回顶楼 | |
发表时间:2006-08-23
测试N久发现还是不对。
DTD已经准备好了,存在错误的XML也有。不过代码执行的很正常。没有一点异常。错误的数据依然读了进来。 有没人有这方面的经验。 当前在下有考虑使用Schema 的想法,不过不知道怎么做。请人帮忙。谢谢 |
|
返回顶楼 | |