XML验证器优化之路:从JDOM到XOM的性能飞跃
1. 背景与动机
在XML处理领域,验证是确保数据正确性的关键步骤,但同时也可能成为性能瓶颈。最初,JDOM在验证方面存在一些问题,虽然经过版本3的优化,验证时间下降了约四倍,但仍存在不足。开发者认为JDOM在API设计和正确性验证上不够完善,有可能创建格式错误的文档,于是决定开发XOM。
2. XOM的诞生与第二次优化:避免重复检查
XOM以正确性优先为原则,不允许为了性能而牺牲正确性。为了提高性能,需要解决验证问题。之前JDOM版本3对 checkXMLName 方法的优化有一定效果,但开发者希望在本次优化中完全消除不必要的检查。因为如果XML输入来自已知的可靠源,就不需要重复检查。
具体来说,XML解析器在输入到达验证器之前已经进行了许多必要的检查,重复检查会降低解析速度。因此,需要为不同类型的输入使用不同的路径。当从解析器已经读取和检查过的字符串创建对象时,构造函数不应再次验证元素名称;而当从库客户端传递的字符串创建对象时,构造函数则需要验证。
JDOM开发者曾考虑过这种优化,但由于糟糕的包设计而受阻。在JDOM中, SAXBuilder 类位于 org.jdom.input 包,而 Element 、 Document 等节点类位于 org.jdom 包,这使得所有构造函数都必须是公共的,其他客户端也能调用,可能导致生成格式错误的XML。后来JDOM 1.0引入了接受未验证输入的特殊工厂类,但这也为
超级会员免费看
订阅专栏 解锁全文
2456

被折叠的 条评论
为什么被折叠?



