设定java虚拟机启动参数,增加内存。另外,如果你xml到了这么大,你还能搞得定吗?

解决方案 »

  1.   

    DOM是先文件的所有内容都读到内存中之后处理的
    如果要想处理这么大的文件一个是加大虚拟机的内存
    一个就是不使用DOM处理,用SAX,
    SAX是读一点内容处理一点
      

  2.   

    以前有过类似经历,
    不能分割文件的话就只能用SAX鸟
      

  3.   

    处理大的XML必须使用SAX来解释,DOM在大于1M的时候就已经性能不行了
      

  4.   

    用sax可以修改文件吗?我只知道读文件。请赐教!
      

  5.   

    还要改?
    ...................
    把XML直接导到数据库
    再导出
      

  6.   

    DOM必须建模文档,通常所建立的对象都要放到内存中,不过不是所有的xml解析器都这样的,apache的xerces是把文档存到硬盘上,需要那部分才拿出来解析。这么大的文档也没有什么太好的办法,只能用SAX解析,把数据用流写入一个新文件,需要加节点的地方手工加。
      

  7.   

    这么大的xml文件,你要考虑还一种存储方式叻,比如数据库
      

  8.   

    SAX解析器会回调你在DefaultHandler子类里面定义的startElement(String, String, String, Attributes)、characters(char[], int, int)、endElement(String, String, String)等回调方法,根据需要去实现这些方法就可以了。
      

  9.   

    btw,用DOM是不可行的。当你发现自己沿着一条路子走进了死胡同的时候,那么显然是走错路了。
      

  10.   

    同意 jinxfei(周华健、言兴朋、茅威涛) 设置增大jvm的内存即可
      

  11.   

    一开始就错了,这么多数据就不能用XMLto jinxfei 想不到这里还能看到戏迷,特别是越剧戏迷,实在难得 :)
      

  12.   

    把XML的数据转到数据库中,应当就可以了
      

  13.   

    SAX不可以改数据,他是一个顺序读取回调机制的实现
    DOM能改但是要把模型在内存重构造出来,比较占内存你现在可以改JVM -Xmx512m试试但是这不是长久之计,你赶快想办法把XML改成其他的数据表现形式吧