标签:
dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。我们说Dom4j是一个框架,框架就是很多很多类的集合,它整合了DOM思想,将文档中的所有内容创建成对象放到内存中,利用事件驱动来对XML实现不同的操作。
1.Dom4j的引入
使用Dom4j时,必须首先引入dom4j.jar,如果使用到了它的拓展功能,还需要引入jaxen-1.1-beta-6.jar。
2.对XML的操作
要想实现对XML的操作,首先必须读取到XML文档:
SAXReader reader = new SAXReader(); Document document = reader.read(new File("src/student.xml"));
①查询
//1获得根元素 Element root = document.getRootElement(); //2遍历根元素下student的子元素 Iterator<Element> it = root.elementIterator("student"); while(it.hasNext()){ Element studentEle = it.next(); //3获得number属性 String number =studentEle.attributeValue("number"); String name = studentEle.elementText("name"); String age = studentEle.elementText("age"); String sex = studentEle.elementText("sex"); }
②添加
//1获取students根元素 Element root = document.getRootElement(); //2添加学生元素 Element student = root.addElement("student").addAttribute("number", "ITCAST_003"); //3增加子元素 student.addElement("name").addText("Fanny"); student.addElement("age").addText("23"); student.addElement("sex").addText("female"); //4将新添加的写回到文档中 //1>创建格式化器 OutputFormat format = OutputFormat.createPrettyPrint(); //2>创建写入器 XMLWriter writer = new XMLWriter(new FileWriter("src/studentcopy.xml"),format); //3>写入文件 writer.write(document); //4>关闭资源 writer.close();
③删除
//1.获取根元素 Element root = document.getRootElement(); //2.遍历student的子元素 //2.1>方法一 Iterator<Element> it = root.elementIterator("student"); while(it.hasNext()){ Element studentEle = it.next(); String number = studentEle.attributeValue("number"); if(number == "jerry"){ it.remove(); } } //2.2方法二 List<Element> list = root.elements("student"); for(int i = 0; i < list.size(); i++){ Element studentEle = list.get(i); //3.判断学号是否等于被删除学生,是的话就执行删除 if("itcast_0001".equals(studentEle.attribute("number"))){ studentEle.getParent().remove(studentEle); break; } } //3.保存到文档 OutputFormat format = OutputFormat.createPrettyPrint(); XMLWriter writer = new XMLWriter(new FileOutputStream("src/studentDel.xml"),format); writer.write(document); writer.close();
总结:
在学习Dom4j的过程中,感觉很像学习js的时候对DOM的操作,实际上,Dom4j也正是在DOM的基础上实现对XML的操作的,所以这一块的学习一定要和之前的HTML DOM结合起来,会事半功倍的。
标签:
原文地址:http://blog.csdn.net/zjx86320/article/details/45393301