1,听说apache的xerces比JDK的实现快至少30倍。
但是XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
XMLReaderFactory.createXMLReader();上面2种都试了下,貌似速度上没有什么区别,几乎完全一样。
(当然第2种的时候,我把xercesImpl.jar删除了,应该是用了jdk标准的了吧?)
是不是我写的有问题?2, 对象XML文件虽然大但是对于我来说,许多节点是根本不需要的。
有什么set函数可以设置下自动跳过吗?使得大幅提高读XML的速度。 void setDTDHandler(DTDHandler handler)
允许应用程序注册 DTD 事件处理程序。
void setEntityResolver(EntityResolver resolver)
允许应用程序注册实体分析器。
void setErrorHandler(ErrorHandler handler)
允许应用程序注册错误事件处理程序。
void setFeature(String name, boolean value)
设置功能标志的值。
void setProperty(String name, Object value)
但是XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
XMLReaderFactory.createXMLReader();上面2种都试了下,貌似速度上没有什么区别,几乎完全一样。
(当然第2种的时候,我把xercesImpl.jar删除了,应该是用了jdk标准的了吧?)
是不是我写的有问题?2, 对象XML文件虽然大但是对于我来说,许多节点是根本不需要的。
有什么set函数可以设置下自动跳过吗?使得大幅提高读XML的速度。 void setDTDHandler(DTDHandler handler)
允许应用程序注册 DTD 事件处理程序。
void setEntityResolver(EntityResolver resolver)
允许应用程序注册实体分析器。
void setErrorHandler(ErrorHandler handler)
允许应用程序注册错误事件处理程序。
void setFeature(String name, boolean value)
设置功能标志的值。
void setProperty(String name, Object value)
解决方案 »
- 小菜鸟求助各类大神,求教求解答或者方法,实在很重要,请路过的大神务必看看帖子帮小菜鸟一把。
- 一个解决多国语言的问题
- 在windows xp中,我的Java awt组件显示出来的中文是框框
- 鼠标点击屏幕某个地方,在这个地方画一个圆点,为什么圆点跟鼠标的位置有偏移呢?
- 对象保存到mysql中存现的问题
- 求助iReport问题
- 请...问... 有给出年月 获得指定月份的天数, 有库函数吗?
- 学习开源项目遇到个小问题 :(
- Hashtable问题,方法中返回的Hashtable的capacity发生变化
- 有关java和javascript~
- Java ProgressMonitorInputStream类的一个问题,望高手解答。。
- lucene+heritrix做个局域网搜索引擎
http://blog.csdn.net/zhouxianli/archive/2008/05/26/2482646.aspx如果你只需要处理其中的少量节点,可以考虑先用文本处理的方式把这些小段 xml 提取出来,然后再分别解析嘛。
1.定时执行一个导入程序。把XML的内容通过NIO的方式,导入到一个结构化的数据库表中。
2.然后什么统计查询的,都在这个表中操作。
2,对中间文件作统计。
3,最终输出。但是目前的情况,我们把输出中间文件等处理都注释掉,读XML文件本身速度不理想,
(仅读取部分对于512M文件就需要60-70秒)希望仅读取部分,一个1G的XML文件时间大概在40秒左右,整个处理能1分钟搞定。
DefaultHandler, DefaultHandler2, ValidatorHandler, XMLFilterImpl, XMLReaderAdapter 目前是继承DefaultHandler在做。
我还特别看了XMLFilterImpl
在1.6下已经能达到客户需求。