关于dom4j、dom如何清理内存中已经加载的xml树
目前在使用DOM和dom4j对XML文件进行增删改查,如果我在同一个线程中做多次增删改操作,如何保证DOM内存同步和物理文件同步?又如何清理在内存中已加载的数据?
问题补充:
你说的这种就是很单纯的在一个线程中执行所有的操作,如果我是在单线程中操作,每做一次增删改查的一种,我都要保存到文件中去,如:
第一次:增加,保存文件。
第二次:删除,保存文件。
.....
问题补充:
我现在就是每次都重新读取这个文件生成Document对象,可是我怀疑他还是在内存中去读取的,所以想有个清理在内存中已加载的数据。
问题补充:
每次保存到文件后用Document = null;也不行??
这样做也不行。
问题补充:
这个需要确认一下,另外,如果真是从内存中读的话,你把内存中清理了,但是document还没有被GC,能保证它不会给你读个空的XML出来吗?
现在就是要把内存先进行清理,确认这部是否可行,可我不知道如何进行清理
问题补充:
呵呵,不知道是程序上的原因还是其它什么原因,我用W3C的DOM也是这样。期待....
问题补充:
终于经过努力找到了答案,就是在用W3C DOM,DOM4J,JDOM对xml文件做操作时(增删改)不要放在在tomcat 的webapps 下。
哎,即郁闷又显高兴!
相关文档:
C#
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("~/Config/User_yhlx_Jb.xml"));
DataView dv = ds.Tables[0].DefaultView;
//dv.RowFilter = "State=0";
this.DropDownList1.DataSource = dv;
this.DropDownList1.DataTextField = "text";
this ......
/// <summary>
/// 支持XML序列化的泛型 Dictionary
/// </summary>
/// <typeparam name="TKey"></typeparam>
/// <typeparam name="TValue"></typeparam>
[XmlRoot("SerializableDictionary")]
public class SerializableDictionary<TKey, TValue& ......
Caused by: java.sql.SQLException: ORA-00918: column ambiguously defined
Caused by: com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in com/ibatis/jpetstore/persistence/sqlmapdao/sql/Item.xml.
--- The error occurred while applying a parameter map.&nbs ......
/* Author: 杨宇 yangyu@sina.cn */
/*
用法示例:
$cls_xml = new cls_xml();
if ($array){
$cls_xml->array2xml($array);
echo $cls_xml->getXml();
}else{
echo '';
}
*/
class cls_xml{
var $xml;
&nbs ......