关于dom解析的问题 我也在用dom方式,不过没有遇到那么大的xml文件。xerces-c有2种方式,您去试试SAX怎么样? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 sax不能解析成树形结构,不行呀 应该不是DOM溢出,是虚拟机溢出了 DOM与SAX的区别: DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问 SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问 可是我的jbuilder的运行参数已经将内存设置成500m了在没解析之前,xml文件也是在内存之中的只要一执行解析,就会出现outofmemory的问题 InputSource source = new InputSource(reader); DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document doc = db.parse(source); 其中reader是一个StringReader对象,用来储存需要解析的xml字符串 当运行到Document doc = db.parse(source);的时候就发生了outofmemory的问题 难道dom解析的能力只有十几兆? 跟你的JB的启动参数没有关系,每个java程序启动的时候,都会有相应的虚拟机(暂时这么说),这个堆栈大小是默认的,你可以在类启动参数里加上,没用用过jb,所以不是很清楚怎么加不过你可以试一下命令行 类似于 java -mx256M -classpath %classpath% com.neusoft.panel.XNHStart 谢谢楼上的关注,jb的参数设置就是调整虚拟机的内存大小。况且需要解析的xml字符串已在内存中了。只是在dom解析时才会出现问题。 帖子中“引用回复”功能的字符替换及转义的纠结问题!望各位大神相助啊! 求教:struts架构的jsp页面取不到form表单的值 问一个servlet的问题 关于JPtionPane显示提示信息的问题 急求一个EJB中的HQL语句 关于WebLogic服务启动错误? 使用Struts碰到的问题 Actionform如何接收传递过来的数组 求Tomcat5的下载 java中有无函数与vb中format函数相对应? java.lang.NoSuchFieldError: sqlResultSetMappings 请高手指点一二
DOM:处理大型文件时其性能下降的非常厉害。
这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,
而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问
SAX:不现于DOM,SAX是事件驱动型的XML解析方式。
它顺序读取XML文件,不需要一次全部装载整个文件。
当遇到像文件开头,文档结束,或者标签开头与标签结束时,
它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,
适合对XML的顺序访问
在没解析之前,xml文件也是在内存之中的
只要一执行解析,就会出现outofmemory的问题
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = db.parse(source);
其中reader是一个StringReader对象,用来储存需要解析的xml字符串
当运行到Document doc = db.parse(source);的时候就发生了outofmemory的问题
难道dom解析的能力只有十几兆?
不过你可以试一下命令行