Java对XML节点的修改、添加、删除 –By Xstream框架
Posted onJava对XML节点的修改、添加、删除 –By Xstream框架
用最简洁的页面描述企业应用与Java艺术! 关于作者
Java对XML节点的修改、添加、删除 –By Xstream框架
12 三月, 2010 (10:36) | 代码 | 繁体 English 作者: H.E.
在J2EE、Java项目中对xml操作是一项非常常见的事情,在我认识了XStream以后,才彻底明白XML模型对象的概念,使用XStream让我XML的设计不由自主更符合OO的风格。另外,除了在设计上得到的体验,还在实际操作中得到了便捷的体验。
简单来说,我在IBM的Java开发园地上看过一些操作XML经典的文章被广为流传,但是无论是采用DOM4J还是JDOM对XML文件中的节点或者整个文件的进行 修改、添加、删除 都没有XStream 简单、方便。
下面来看一下 XStream 官方网站上的例子,网站地址: http://xstream.codehaus.org/tutorial.html。
官方网站上的例子只是提供了一个例子,并没有说明如何对 XML节点进行修改、添加、删除,XStream 官方网站上只是给出了一个从对象到XML,从XML到对象的例子。
Javabloger的作者H.E.通过实践发现采用 XStream可以很简单的对XML节点进行 修改、添加、删除,比传统的XML框架简单很多倍,用过一次的人都不会忘记,因为实在是太方便了。
修改XML节点代码示例如下:
public void upDateMySQLRecentHost(String HostID) throws Exception {
List <RecentHost> list=null;
try {
list=getMySQLRecentHost(); **// 1. 先通过 XStream读取XML文件,变成List集合里面包含节点对象。**
for (int i=0;i<list.size();i++){ ** // 2. 遍历整个 List 对象集合**
if (list.get(i).getId().equals(HostID )){ **// 3. 比较 需要进行修改的节点 ID**
list.remove(i); **// 4. 移除 指定的节点 **
list.add(recentHost); ** // 5. 添加 定义的新节点**
}
} ** // 完成操作,对节点进行 匹配的删除和添加 这个就修改。**
* // 以下代码H.E.就不一一介绍了,大致意思就是 将修改过的List 对象集合,重新写入XML中。*
xstream.alias("RecentHost", RecentHost.class);
String xml="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"+xstream.toXML(list);
System.out.println ( xml );
FileWriter resultFile = new FileWriter(recentLoginHostCaseXMLFile);
PrintWriter myFile = new PrintWriter(resultFile);
myFile.println(xml);
resultFile.close();
}
catch ( Exception e) {
logger.error(e);
}
}
添加XML节点代码示例如下:
public void AddMySQLRecentHost(RecentHost RecentHostInfo) throws Exception {
List <RecentHost> list=null;
try {
list=getMySQLRecentHost(); ** // 1. 先通过 XStream读取XML文件,变成List集合里面包含节点对象。**
list.add( RecentHostInfo ); **// 2. 添加到 List集合里面。**
xstream.alias("RecentHost", RecentHost.class); **// 3.进行XML对象映射**
String xml="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"+xstream.toXML(list);
* // 以下代码H.E.就不一一介绍了,大致意思就是 将添加过的List 对象集合,重新写入XML中。*
FileWriter resultFile = new FileWriter(recentLoginHostCaseXMLFile);
PrintWriter myFile = new PrintWriter(resultFile);
myFile.println(xml);
resultFile.close();
}
catch ( Exception e) {
logger.error(e);
}
}
删除XML节点代码示例如下:
public void deleteMySQLRecentHost(String id) throws Exception {
List <RecentHost> list=null;
try {
list=getMySQLRecentHost(); **// 1. 先通过 XStream读取XML文件,变成List集合里面包含节点对象。**
for (int i=0;i<list.size();i++){ ** // 2. 遍历整个 List 对象集合**
if (list.get(i).getId().equals(HostID )){ **// 3. 比较 需要进行修改的节点 ID**
list.remove(i); ** // 4. 移除 指定的节点 **
}
} ** // 完成删除操作。**
* // 以下代码H.E.就不一一介绍了,大致意思就是 将修改过的List 对象集合,重新写入XML中。*
xstream.alias("RecentHost", RecentHost.class);
String xml="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"+xstream.toXML(list);
System.out.println ( xml );
FileWriter resultFile = new FileWriter(recentLoginHostCaseXMLFile);
PrintWriter myFile = new PrintWriter(resultFile);
myFile.println(xml);
resultFile.close();
}
catch ( Exception e) {
logger.error(e);
}
}
–end–
H.E.@Info: J2EE Architect/JEvangelist Life@NanJing Hobby@Photography Email@njthnet(at)gmail.com