首先声明,这个地方是利用dom4j进行解析和生成,需要用到dom4j的jar包,所以首先需要我们获取jar包:
<dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency>
生成xml文件代码案列:
package day12; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; /** * 写出XML文档 */ public class WriteXmlDemo { public static void main(String[] args) { List<Emp> empList = new ArrayList<Emp>(); empList.add(new Emp(1,"张三",22,"男",3000)); empList.add(new Emp(2,"李四",23,"女",4000)); empList.add(new Emp(3,"王五",24,"男",5000)); empList.add(new Emp(4,"赵六",25,"女",6000)); empList.add(new Emp(5,"钱七",26,"男",7000)); empList.add(new Emp(6,"传奇",21,"男",8000)); /* * 写出XML文档的大致步骤 * 1.创建空白文档对象Document * 2.向该文档中添加根元素 * 3.按照规定的XML文档结构从根元素开始,逐级添加子元素,已完成该结构 * 4.创建XMLWriter * 5.将Document对象写出成XML文档 * 6.将XMLWriter关闭 */ //1 Document doc = DocumentHelper.createDocument(); /* * 2.Element addElement(String name) * Document提供的该方法是用来向当前文档中添加给定名字的根元素。并将其以一个Element * 实例返回以便于继续对该根元素操作。 * 需要注意,该方法只能调用一次,因为一个文档中只能有一个根元素。 */ Element root = doc.addElement("list"); //将所有员工信息以若干<emp>标签形式添加到<list>中 for(Emp emp:empList){ /* * Element提供了向其中添加子标签的方法: * Element addElement(String name) */ Element empEle = root.addElement("emp"); //添加<name>标签 Element nameEle = empEle.addElement("name"); nameEle.addText(emp.getName()); //添加<age>标签 Element ageEle = empEle.addElement("age"); ageEle.addText(String.valueOf(emp.getAge())); //添加<gender>标签 Element genderEle = empEle.addElement("gender"); genderEle.addText(emp.getGender()); //添加<salary>标签 Element salaryEle = empEle.addElement("salary"); salaryEle.addText(emp.getSalary()+""); empEle.addAttribute("id",emp.getId()+""); } try { FileOutputStream fos = new FileOutputStream("myemp.xml"); XMLWriter writer = new XMLWriter(fos,OutputFormat.createCompactFormat()); writer.write(doc); System.out.println("写出完毕!"); writer.close(); } catch (Exception e) { e.printStackTrace(); } } }
解析xml文件代码案列
package day12; import java.io.FileInputStream; import java.util.ArrayList; import java.util.List; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; /** * 使用DOM4J解析XML文档 * @author tarena * */ public class ParseXMLDemo { public static void main(String[] args) { /* * 读取emplist文件,将该xml文档中的所有员工信息解析出来, * 并以若干Emp实例保存,然后将这些员工信息存入到一个List集合中。 */ /* * 使用DOM解析XML的四大致流程: * 1.创建SAXReader * 2.使用SAXReader读取要解析的XML文档,该步骤就是DOM耗时耗资源的地方, * 因为会将文档所有内容解析完毕并存入到内存中。 * 读取方法会返回一个Document对象,该对象就表示解析出来的该XML文档内容 * 3.通过Document对象获取根元素(根标签)。 * 4.根据文档的结构,从根元素开始逐级获取子元素以达到遍历XML文档数据的目的。 */ try { //1 SAXReader reader = new SAXReader(); //2 Document doc = reader.read(new FileInputStream("emplist.xml")); /* *3.获取根元素 *Element的每一个实例用于表示XML文档中的一个元素(一对标签) *它提供了很多用于操作当前标签的方法,其中常用的用于获取标签信息的方法有: * * String getName() 获取标签名 * * Element elements(Sting name) 根据给定名字获取当前标签中的子标签 * * List elements() * 获取当前标签中的所有子标签,返回的集合中是若干Element实例,每个为一个子元素 * * List elements(String name) 获取当前标签中的所有同名名字元素 * * String getText() 获取当前标签中间的文本 * * Attribute attribute(String name) 获取当前标签中指定名字的属性 * */ Element root = doc.getRootElement(); List<Emp> empList = new ArrayList<Emp>(); /* * 获取<list>标签中的所有<emp>标签 */ List<Element> list = root.elements(); /* * 将每一个<emp>标签中的内容取到,并以一个Emp实例保存,然后将该对象存入集合 */ for(Element empEle : list){ // System.out.println(empEle.getName()); //获取name Element nameEle = empEle.element("name"); String name = nameEle.getText(); System.out.println(name); //获取age int age = Integer.parseInt(empEle.elementText("age")); System.out.println(age); //获取性别 String gender = empEle.elementText("gender"); System.out.println(gender); //获取工资 int salary = Integer.parseInt(empEle.elementText("salary")); System.out.println(salary); //获取ID int id = Integer.parseInt(empEle.attributeValue("id")); Emp emp = new Emp(id , name , age ,gender, salary); empList.add(emp); } System.out.println("解析完成!"); for(Emp e:empList){ System.out.println(e); } } catch (Exception e) { e.printStackTrace(); } } }
实体类
package day12; /** * 员工信息 */ public class Emp { private int id; private String name; private int age; private String gender; private int salary; public Emp(){ } public Emp(int id, String name, int age, String gender, int salary) { super(); this.id = id; this.name = name; this.age = age; this.gender = gender; this.salary = salary; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public int getSalary() { return salary; } public void setSalary(int salary) { this.salary = salary; } @Override public String toString() { return id + "," + name + "," + age + "," + "," + salary; } }
如果有帮助到大家,希望大家给个赞,谢谢!
个人学习随笔,若是帮助到您,请给个推荐,或者评论一下下,谢谢了哟。若有不懂之处,请联系QQ:351094262(验证信息:博客园),原创不易,转载请标明出处!