java解析xml,除了dom4j,还有更快的方式吗?
场景:
从发出请求到接收数据,耗时很短,但是在解析数据组装成实体bean的时候,耗时分别在300多毫秒,100多毫秒,几十毫秒,或者10毫秒以下不等。平均数据量在600+,这样导致解析耗时,基本上要10秒及以上,这还不算其他业务的处理耗时。目前使用的是dom4j的方式来解析的,但是这个速度真的是。。。。。
提问:
请问除了dom4j,还有其他更快的方式来解析吗?或者说如果继续使用dom4j,还能怎么优化呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
多线程吧
xml过大的话,可以采用jdk自带的SAX来解析,那个貌似比较快。
我记得以前看过一个对比,
xml数据比较小的情况下,dom4j很方便。SAX比较复杂。还有一个什么的一般。
但是xml数据比较大的情况下,SAX性能比dom4j和另外一个好。
这数据是从平台返回的,通用的都是xml,改成json不现实。所以目前的触发点只能想想怎么解析会更快
回复
如果不是全文件解析的话,尽量不做遍历,结合xpath提取。http://www.cnblogs.com/zhenghongxin/p/4345220.html
回复
是全文件解析,返回的一份xml文件里面包含多条记录的,需要分别解析每一条记录,然后把某一元素的值赋给特定的实体类对应的属性上去
回复
这个是不是可以试下SAX或STAX减少中间环境
这几天正在关注这个,dom4j不行了么,那json吧。
http://blog.5ibc.net/p/30770.html
xml格式是固定的,但是xml里面的 元素名称 不是和实体类的属性一一对应的,这一步是需要自己来对应的,将某一元素的值赋给实体类里面的某个属性
xml格式固定的话,自己用sax解析,以new对象方式来生成实体bean速度更快!
因为其它第三方组件基本上都是以反射方式来生成bean的,速度会慢得多。