Java对XML节点的修改、添加、删除 –By Xstream框架

Posted on

Java对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

希望本站内容对您有点用处,有什么疑问或建议请在后面留言评论
转载请注明作者(RobinChia)和出处 It so life ,请勿用于任何商业用途