Java动态生成和解析xml文件步骤详解
首先声明,这个地方是利用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();
}
}
}
View Code
解析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();
}
}
}
View Code
实体类
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;
}
}
View Code
如果有帮助到大家,希望大家给个赞,谢谢!
以上是 Java动态生成和解析xml文件步骤详解 的全部内容, 来源链接: utcz.com/z/391406.html