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