以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DOM/SAX/XPath 』  (http://bbs.xml.org.cn/list.asp?boardid=11)
----  dom4j解析大xml文件(20M左右)的问题。。。。。。,高手请进  (http://bbs.xml.org.cn/dispbbs.asp?boardid=11&rootid=&id=71419)


--  作者:anchorTan
--  发布时间:1/15/2009 2:43:00 PM

--  dom4j解析大xml文件(20M左右)的问题。。。。。。,高手请进
用dom4j解析一20M左右的xml文件时,在设置了jvm的内存后,能够运行,要不然会报outofmemory错误,但是,我想把读入的xml文件内容显现出来的时候,我用了document.toXml()方法,但是得到的内容好像只是原来xml文件的一部分,比如说有些节点的子节点就没了,请高人指点这是怎么回事?,document不应该包含整个xml文件的吗?????

SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File("aaa.xml"));
String content = document.toXML();


--  作者:Qr
--  发布时间:1/15/2009 3:31:00 PM

--  
DOM方式无法处理大型XML文档的,因为其解析方式是将XML完全读入内存中处理,20M的文件最少需要200M的内存空间,不报outofmemory才怪。
要处理大型XML文档,用SAX吧。
--  作者:Qr
--  发布时间:1/15/2009 3:34:00 PM

--  
document不应该包含整个xml文件的吗?????

因为DOM的问题,内存无法完全加载XML文档。至于节点保留多少、遗漏多少,这个要看内存的大小。


--  作者:anchorTan
--  发布时间:1/18/2009 1:13:00 PM

--  
好像SAX好像不太适合对XML文件进行修改......
--  作者:Qr
--  发布时间:1/18/2009 6:03:00 PM

--  
以下是引用anchorTan在2009-1-18 13:13:00的发言:
好像SAX好像不太适合对XML文件进行修改......


你用DOM方式修改大型XML文档看看,偶不相信你会觉得DOM适合。
--  作者:anchorTan
--  发布时间:1/19/2009 4:23:00 PM

--  
非常感谢,那请问一下,用SAX怎么修改XML中的element或则attribute,能给个简单的实例吗,谢谢,不胜感激
--  作者:Qr
--  发布时间:1/19/2009 8:38:00 PM

--  
SAX不提供修改功能函数。要实现SAX“修改”XML,只有另想办法,但是不同的解析器,用法不同。只有根据特定的解析器,设计不同的算法来进行。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms