黑马程序员技术交流社区

标题: 用Dom4j删除XML指定元素的2种方法 [打印本页]

作者: 冰深    时间: 2012-11-18 09:48
标题: 用Dom4j删除XML指定元素的2种方法
         我看教程上写的删除指定节点的方法是用获取该节点的父节点然后remove子节点的方法来实现删除该节点的元素的,但是我之前看过插入指定元素到xml的时候是用list中的add(index,element)方法来实现的,那么为什么不能用这个方法删除指定元素呢?于是,我尝试将某个节点下的所有节点装到一个List集合中,然后remove我要删除的元素,结果尝试是成功的!下面是详细的代码,包括增加一个节点到指定位置和删除一个节点到指定位置。
      先看看方立勋老师讲的增加指定元素导指定位置的方法,就是用list集合的add方法插入的:
  1. private static void addElementTo() throws DocumentException, IOException {
  2.                 SAXReader reader=new SAXReader();
  3.                 Document document=reader.read("src/exam.xml");
  4.                 Element root=document.getRootElement();
  5.                
  6.                 Element stu1=root.element("student");
  7.                 List list=stu1.elements();
  8.                 Element gender=DocumentHelper.createElement("gender");//通过DocumentHelper创建对象
  9.                 gender.addAttribute("requried","Yes");
  10.                 gender.setText("男");
  11.                 list.add(2,gender);//插入指定位置,2
  12.                 OutputFormat format=OutputFormat.createPrettyPrint();
  13.                 format.setEncoding("utf-8");
  14.                 XMLWriter writer=new XMLWriter(new FileOutputStream("src/exam.xml"),format);
  15.                 writer.write(document);
  16.                 writer.close();
  17.         }
复制代码
(删除指定元素的2中方法)受到方老师的用List的启发,我也想着能不能用List的方法删除指定节点呢?于是尝试着用以下代码,发现成功了!比传统方法更方便!
  1. //删除刚才增加的那个节点,注意,有两种方法,1,获取目标节点的父节点然后remove该节点;2,和add到指定元素相对应的,用List来删除指定元素
  2.         private static void deleteTheElement() throws DocumentException, IOException {
  3.                 SAXReader reader=new SAXReader();
  4.                 Document document=reader.read("src/exam.xml");
  5.                 Element root=document.getRootElement();
  6.                 //获取第一个 gender
  7.                 Element stu=(Element)root.elements("student").get(0);
  8. //                List list=stu.elements();
  9. //                //法1,用删除list集合元素的方法删除,很方便
  10. //                list.remove(2);
  11.                 //法2,用传统方法删除
  12.                 Element gender=stu.element("gender");
  13.                 gender.getParent().remove(gender);
  14.                 OutputFormat format=OutputFormat.createPrettyPrint();
  15.                 format.setEncoding("UTF-8");
  16.                 XMLWriter writer=new XMLWriter(new FileOutputStream("src/exam.xml"),format);
  17.                 writer.write(document);
  18.                 writer.close();}
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2