XML PULL和PUSH技术的区别
16lz
2021-01-22
PULL跟SAX虽然都是基于事件的,但是两者最重要的区别应该是:
SAX可以认为是“PUSH“的,跟PULL相对。因为Parser在遇到特定事件源的时候会将数据传递给回调函数来处理,从这个意义上讲数据是”推送“给用户的,而PULL方式是遇到特定事件时由用户去从Parser中获取自己感兴趣的,感觉数据像是”拉“下来的。
还有一个区别是:在PULL式解析过程中(while循环里),可以退出循环;但是在SAX过程中,一旦开始解析就要解析完成。
另外,稍微扩展下:
目前主要存在两种解析和生成原理,一种是通过反射来匹配类名、属性名等信息,一种是直接使用jvm的字节码来进行操作,这两种方式的效率高下不言而喻,自然是二进制字节码效率更高。
SAX可以认为是“PUSH“的,跟PULL相对。因为Parser在遇到特定事件源的时候会将数据传递给回调函数来处理,从这个意义上讲数据是”推送“给用户的,而PULL方式是遇到特定事件时由用户去从Parser中获取自己感兴趣的,感觉数据像是”拉“下来的。
还有一个区别是:在PULL式解析过程中(while循环里),可以退出循环;但是在SAX过程中,一旦开始解析就要解析完成。
另外,稍微扩展下:
目前主要存在两种解析和生成原理,一种是通过反射来匹配类名、属性名等信息,一种是直接使用jvm的字节码来进行操作,这两种方式的效率高下不言而喻,自然是二进制字节码效率更高。
更多相关文章
- Vue.js流程图插件 可自定义流程节点事件
- Node.js 事件循环完整指南[每日前端夜话0x9F]
- 分布式作业系统 Elastic-Job-Lite 源码分析 —— 作业事件追踪
- 招聘|北京字节跳动科技有限公司
- 如何正确使用Node.js事件[每日前端夜话0x4B]
- 现代浏览器探秘(part4):事件处理 [每日前端夜话(0x14)]
- 字节一面,面试官告诉我链表掌握的不熟练
- 关于Python圈近几天争论事件的一些思考
- Swoole自定义项目初始化事件处理的实现