一:如下是获取单例模式的document对象。
private static Document returndoc(Document docuname, String xmlname) {
if (docuname != null) {
return docuname;
}
SAXReader reader = new SAXReader();
// 如果不存在就创建对象。
try {
docuname = reader.read(XMLUtil.class.getClassLoader()
.getResourceAsStream("xml/" + xmlname + ".xml"));
return docuname;
} catch (DocumentException e) {
e.printStackTrace();
}
return null;
}
二、在这写入代码里,out被我赋值了两次,我想实现同时写入到bin和src。
其中第一次建立的流应该算是没有正常关闭??当out第二次赋值后,依旧成功的将documen写入到xml中。之后出现的问题就是:当我在Dao中再次调用第一段代码需要得到docunment时,竟得不到之前已经创建好的单例docunment对象(之前创建好的document变为null),而是让我再次创建,并且报出异常。 经过多次调试修改,发现,就是write2XML方法中第一次out我没有关闭导致的。但是我分析不清这是为什么,求指导。
public static void write2XML(Document d, String name) {
XMLWriter out = null;
try {
String path = XMLUtil.class.getClassLoader()
.getResource("xml/" + name + ".xml").getPath();
// System.out.println(path);//路径上不要出现空格。
// src中的文件都会被编译或复制一份到bin目录下,所以src下文件改动,bin下的文件也会跟着自动改动。反正不成立。所以我们需要在学习阶段把得到
// 的bin目录换成src目录。
out = new XMLWriter(new FileWriter(path),//未关闭的输出流
OutputFormat.createPrettyPrint());
out.write(d); // 写入到src目录下的被copy的xml
//out.close();
path = path.replace("bin", "src");
out = new XMLWriter(new FileWriter(path),
OutputFormat.createPrettyPrint());
out.write(d); // 写入到bin目录下的的xml
System.out.println(d+"+write2XML");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (out != null)
out.close(); //只关闭了其中的一个流,对否?
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
三、这是导出的项目,
http://pan.baidu.com/s/1jGrg0ku