直接呈现代码,代码中有详细注释
Dom4jFirst.java
package com.bao; import java.io.File; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.Iterator; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; /** * 程序值得优化的地方:在Student中,根据数据的特点,college也应该是一个对象 */ public class Dom4jFirst { public static void main(String[] args) { try { writeXml(); } catch (Exception e) { System.out.println("写xml出现异常"); e.printStackTrace(); } ArrayList<Student> students = new ArrayList<Student>(); try { readXML("src/com/bao/studentInfo.xml", students); } catch (Exception e) { System.out.println("解析xml出现问题"); e.printStackTrace(); } Iterator<Student> iterator = students.iterator(); Student student = null; while (iterator.hasNext()) { student = iterator.next(); System.out.println(student); } } /** * 借助于Dom4j写xml文件是非常轻松的事情,总体思路就是首先构建根元素,然后根元素构建子元素。 * * 当然,子元素也可以构建自己的子元素 * @throws Exception */ public static void writeXml()throws Exception{ Document document = DocumentHelper.createDocument(); Element root = document.addElement("persons"); Element element_1 = root.addElement("person").addAttribute("age", "24"); element_1.addElement("name").addText("冯小卫"); element_1.addElement("性别").addText("男"); Element element_2 = root.addElement("person").addAttribute("age", "22"); element_2.addElement("name").addText("秦珊珊"); element_2.addElement("性别").addText("女"); XMLWriter writer = new XMLWriter(new FileOutputStream("persons.xml")); writer.write(document); writer.close(); } /** * *Dom4j解析xml例子 * *解析思路: * *首先获取根元素root,然后通过root元素获取root子元素的遍历器。 * *得到遍历器以后,移动到第一个子元素上,解析参数。 * *解析参数结束以后,开始解析这个子元素的子元素。 * * */ /** * 遍历整个XML文件,获取所有节点的值与其属性的值,并放入ArrayList中 * * @param filename * String 待遍历的XML文件(相对路径或者绝对路径) */ @SuppressWarnings("unchecked") public static void readXML(String filename, ArrayList<Student> students) throws Exception { SAXReader saxReader = new SAXReader(); Document document = saxReader.read(new File(filename)); Element root = document.getRootElement();// 获取根元素 Iterator<Element> iter = root.elementIterator(); Student student = null; Element element = null; Attribute ageAttr = null; Attribute leaderAttr = null; while (iter.hasNext()) { student = new Student(); element = iter.next(); ageAttr = element.attribute("age"); if (ageAttr != null) { String age = ageAttr.getValue(); if (age != null && !age.equals("")) { student.setAge(age); } else { student.setAge(20 + ""); } } else { student.setAge(20 + ""); } Iterator<Element> iterInner = element.elementIterator(); while (iterInner.hasNext()) { Element elementInner = iterInner.next(); if (elementInner.getName().equals("college")) { student.setCollege(elementInner.getText()); leaderAttr = elementInner.attribute("leader"); if (leaderAttr != null) { String leader = leaderAttr.getValue(); if (leader != null && !leader.equals("")) { student.setLeader(leader); } else { student.setLeader("leader"); } } else { student.setLeader("leader"); } } else { if (elementInner.getName().equals("name")) { student.setName(elementInner.getText()); } else if (elementInner.getName().equals("telephone")) { student.setTelephone(elementInner.getText()); } else if (elementInner.getName().equals("notes")) { student.setNotes(elementInner.getText()); } } } students.add(student); } } }
Student.java
package com.bao; public class Student { private String age; private String name; private String college; private String telephone; private String notes; private String leader; public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCollege() { return college; } public void setCollege(String college) { this.college = college; } public String getTelephone() { return telephone; } public void setTelephone(String telephone) { this.telephone = telephone; } public String getNotes() { return notes; } public void setNotes(String notes) { this.notes = notes; } public void setLeader(String leader) { this.leader = leader; } public String getLeader() { return leader; } @Override public String toString() { return "age:" + getAge() + " collage:" + getCollege() + " leader:" + getLeader() + " name:" + getName() + " notes:" + getNotes() + " tel:" + getTelephone(); } }
studentInfo.xml
<?xml version="1.0" encoding="gb2312"?> <students> <student age="25"><!--如果没有age属性,默认的为20--> <name>崔卫兵</name> <college>PC学院</college> <telephone>62354666</telephone> <notes>男,1982年生,硕士,现就读于北京邮电大学</notes> </student> <student> <name>cwb</name> <college leader="学院领导">PC学院</college><!--如果没有leader属性,默认的为leader--> <telephone>62358888</telephone> <notes>男,1987年生,硕士,现就读于中国农业大学</notes> </student> <student age="45"> <name>xxxxx</name> <college leader="">xxx学院</college> <telephone>66666666</telephone> <notes>注视中,注释中</notes> </student> <student age=""> <name>lxx</name> <college>yyyy学院</college> <telephone>88888888</telephone> <notes>注视中111,注释中222</notes> </student> </students>
本文介绍使用Dom4j库进行XML文件的读写操作。通过具体代码示例展示了如何创建XML文档、添加元素及属性,以及如何解析XML文档并提取数据。适用于初学者了解Java中XML处理的基本方法。

被折叠的 条评论
为什么被折叠?



