关于dom4j、dom如何清理内存中已经加载的xml树
目前在使用DOM和dom4j对XML文件进行增删改查,如果我在同一个线程中做多次增删改操作,如何保证DOM内存同步和物理文件同步?又如何清理在内存中已加载的数据?
问题补充:
你说的这种就是很单纯的在一个线程中执行所有的操作,如果我是在单线程中操作,每做一次增删改查的一种,我都要保存到文件中去,如:
第一次:增加,保存文件。
第二次:删除,保存文件。
.....
问题补充:
我现在就是每次都重新读取这个文件生成Document对象,可是我怀疑他还是在内存中去读取的,所以想有个清理在内存中已加载的数据。
问题补充:
每次保存到文件后用Document = null;也不行??
这样做也不行。
问题补充:
这个需要确认一下,另外,如果真是从内存中读的话,你把内存中清理了,但是document还没有被GC,能保证它不会给你读个空的XML出来吗?
现在就是要把内存先进行清理,确认这部是否可行,可我不知道如何进行清理
问题补充:
呵呵,不知道是程序上的原因还是其它什么原因,我用W3C的DOM也是这样。期待....
问题补充:
终于经过努力找到了答案,就是在用W3C DOM,DOM4J,JDOM对xml文件做操作时(增删改)不要放在在tomcat 的webapps 下。
哎,即郁闷又显高兴!
相关文档:
XML Schema annotation 元素
定义和用法
annotation 元素是一个顶层元素,规定 schema 的注释。
注释:可以包含 appinfo 元素(由应用程序使用的信息)和 documentation 元素(由用户读取或使用的注释或文本)。
元素信息
项目
说明
出现次数
在父元素中一次。
......
XML Schema attributeGroup 元素
定义和用法
attributeGroup 元素用于对属性声明进行组合,这样这些声明就能够以组合的形式合并到复杂类型中。
元素信息
出现次数
无限制
父元素
attributeGroup、complexType、schema、restriction (simpleContent)、extension (simpleContent)、rest ......
XML Schema import 元素
定义和用法
import 元素用于向一个文档添加带有不同目标命名空间的多个 schema。
元素信息
出现次数
无限制
父元素
schema
内容
annotation
语法
<import
id=ID
namespace=anyURI
schemaLocation=anyURI
any attributes
>
(annotation?)
< ......
/**
* ftp上传文件JavaBean
* @author Administrator
*
*/
public class FtpBean {
//ftp服务地址
private String ftpUrl="";
//ftp用户名
private String userName="";
//ftp密码
private String passWord="";
public String getF ......
1、安装DOM4j
http://www.dom4j.org/
2、安装jaxen
http://jaxen.org/releases.html
3、代码
package extract;
import java.io.*;
import org.dom4j.*;
import org.dom4j.io.*;
import java.util.*;
public class XmlExtract {
private SAXReader reader;
private Docum ......