我用的是public Document read(String fileName) throws MalformedURLException, DocumentException 
{ SAXReader reader = new SAXReader(); Document document = null;
try {
document = reader.read(new FileInputStream(fileName));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} return document; }
这样得到document内存就溢出了,我对dom4jAPI不熟悉,是个新手,请用过dom4j的大侠们,指点迷津,最好是有代码传上,只要能读成功30M的文件,我给100分,十分感谢

解决方案 »

  1.   

    设置JVM 的启动参数。默认的的64MB。
    具体的设置细节,百度一下,你就知道。
      

  2.   

    同意楼上,在你的jvm启动前加入-Xmx256m,如
    java -Xms64m -Xmx256m test
    其中Xms64m表示初始堆为64M,Xmx256m表示最大堆为256M
      

  3.   

    到TOMCAT界面控制台 就是启动的那边可以设置
    java -Xms64m -Xmx256m test
      

  4.   

    这个做法我不是很赞同,程序跑在别的机器上就不行了,正在研究dom4j的API,搞定跟大家分享一下
      

  5.   

    10M以上的xml文件最好用SAX,以下用dom4j...否则会报内存溢出的错
      

  6.   

    给大家推荐一个免费网络硬盘网站。UFO永久免费网络硬盘。完全免费,服务稳定,而且容量比一般的网盘大上好几倍。我一直用这个,感觉真的很不错。现在推荐给大家啊。注册网址:http://www.ufodisk.com/
      

  7.   

    如果你用Dom4j装载30G的XML,你会发现你的机箱在冒烟.
    同意zangxueyou的留言,DOM4j,SAX,JDOM等有不同的使用范围,Google一下会得到比较详细的解释.
      

  8.   

    回上面热心的朋友,我昨天找了一下,dom4j对于大文件也有处理方式的,我的代码入下,还是溢出,有没有人真正用过dom4j解决过大文件导入啊??不胜感激,我的代码如下:
    import java.io.*;
    import java.net.MalformedURLException;
    import java.util.Iterator;
    import java.util.List;import org.dom4j.*;
    import org.dom4j.io.SAXReader;public class ReadAndInsert {
    public static void main(String args[])
    {
    SAXReader sax = new SAXReader();
    sax.addHandler("/DATA/user01", new UserHandler());
    try {
    sax.read(new File("c:/exp/friend.xml"));
    } catch (DocumentException e) {
    e.printStackTrace();
    }
    }
    public static class UserHandler implements ElementHandler
    {
    Element e = null;
    public void onStart(ElementPath path) {
    e = path.getCurrent();
    path.addHandler("USERID", new NameHandler());
    path.addHandler("FNAME", new NameHandler());
    path.addHandler("ORGID", new NameHandler());
    path.addHandler("ORGNAME", new NameHandler());
    path.addHandler("FROMORG", new NameHandler());
    System.out.println(path.getPath()+"***************************");
    //System.out.println(e.getName()+":"+e.getText()); 

    }
    public void onEnd(ElementPath path) {
    path.removeHandler("USERID");
    path.removeHandler("FNAME");
    path.removeHandler("ORGID");
    path.removeHandler("ORGNAME");
    path.removeHandler("FROMORG");
    }

    }
    public static class NameHandler implements ElementHandler
    {
    Element e = null; public void onStart(ElementPath path) {

    System.out.println(path.getPath());
    }
    public void onEnd(ElementPath path) {
        e = path.getCurrent();
    System.out.println(e.getName()+":"+e.getText());

    }

    }

    }